아무튼.. 별로 어렵진 않네 ^^;;
---------------------------------------------------------------------------------
어떤 자연수 n이 있을 떄, d(n)을 n의 각 자릿수 숫자들과 n자신을 더한 숫자라고 정의하자.
예를들어 d(91) = 9 + 1 + 91 =101
이 때, n을 d(n)의 제네레이터라 한다.
위의 예에서 91은 101의 제네레이터이다.
어떤 숫자들은 하나 이상의 제네레이터를 가지고 있는데, 101의 제네레이터는 91 뿐 아니라 100도 있다. 그런데 반대로, 제네레이터가 없는 숫자들도 있으며, 이런 숫자를 인도의 수학자 Kaprekar가
셀프넘버라고 이름붙였다.
1,3,5,7,9,20,31 … 이 그것들인데… 1~ 5000사이의 셀프넘버들의 합을 구하라.
---------------------------------------------------------------------------------
//대충 만들어보니 답은 나오는데 최적화가 필요할듯 ^^
class Program
{
static void Main(string[] args)
{
const int MAX = 5000;
List<int> numberList = new List<int>();
for (int i = 0; i <= MAX; ++i)
numberList.Add(i);
for (int i = 0; i <= MAX; ++i)
numberList.Remove(calGenerater(i));
foreach (int n in numberList)
Console.WriteLine(n);
Console.WriteLine("Sum : " + numberList.Sum());
}
static int calGenerater(int num)
{
int sum = num;
int temp = num;
do sum += temp % 10;
while (0 < (temp /= 10));
return sum;
}
}
'Rev's > 기록하기' 카테고리의 다른 글
KISTI 입사 (0) | 2010.02.17 |
---|---|
NEXON 지원준비 - (참고)인도 게임산업 (0) | 2009.12.09 |
NEXON 지원 준비 - 서류전형 이렇게 준비해볼까 (0) | 2009.12.09 |