>
>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번 설명
>
>
>
>어떤 자연수 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
댓글 달기