메뉴 건너뛰기

app

[문제] 넥슨 입사 문제 1번

박영식2007.02.20 15:33조회 수 2158댓글 0

    • 글자 크기
>
>1번 설명
>
>
>
>어떤 자연수 n이 있을 때, d(n)을 n의 각 자릿수 숫자들과 n 자신을 더한 숫자라고 정의하자.
>예를 들어 d(91) = 9 + 1 + 91 = 101
>이 때, n을 d(n)의 제네레이터(generator)라고 한다. 위의 예에서 91은 101의 제네레이터이다.
>어떤 숫자들은 하나 이상의 제네레이터를 가지고 있는데, 101의 제네레이터는 91 뿐 아니라 100도 있다.
>그런데 반대로, 제네레이터가 없는 숫자들도 있으며, 이런 숫자를 인도의 수학자 Kaprekar가
>
>셀프 넘버(self-number)라 이름 붙였다.
>예를 들어 1,3,5,7,9,20,31 은 셀프 넘버 들이다.
>
>
>1번 문제
>
>1 이상이고 5000 보다 작은 모든 셀프 넘버들의 합을 구하라.
>
>
>1번 답 : 1227365

소스코드
$j = 5000; // 한계 값
$ans = 0;
$argm[$j] = 0; // 배열에 self number가 아닌 값 저장
$numb[5] =0; // 각 자리수를 구하기 위한 예비 배열
$i=1; // 시작 값
while($i<=$j){
        for($k=0;$k<=floor(log10($i));$k++){
                $numb[$k] = floor($i/pow(10, $k))*pow(10, $k);
                        }
                $argm[$i] = $numb[0] + ($numb[0] - $numb[1]) + ($numb[1] - $numb[2])/10 + ($numb[2] - $numb[3])/100 + ($numb[3] - $numb[4])/1000;
                $i++;
                }
for($x=1;$x<=$j;$x++){  // self number를 골라냄.
        $chcd=0;
        for($y=1;$y<=$j;$y++){
                if($x==$argm[$y])
                        $chcd=1;
                                }
if(!$chcd)
        $ans = $ans + $x;
}
echo $ans."<br>";


테스트 페이지 : http://suritam9.woweb.net/www/php/counter/ques2.php
박영식 (비회원)
    • 글자 크기

댓글 달기

이전 1 ... 4 5 6 7 8 9 10 11 12 13 14다음
첨부 (0)
위로