內容 :
在1949年印度數學家 D.R Kaprekar發現了一種數字:Self-numbers。對任何正整數 n ,定義d(n)為n加上其各數字的和。例如:d(75)=75+7+5=87。給任一個正整數 n 當作一個起始點,你可以產生無限的數字序列:n, d(n), d(d(n)), d(d(d(n))),…例如:如果你從33開始,下一個數字是33+3+3=39,再下一個數字是39+3+9=51,再下一個數字是51+5+1=57。所以你可以產生以下的序列:
33, 39, 51, 57, 69, 84, 96,111, 114, 120, 123, 129, 141, ……
我們稱n為d(n)的generator。在上面的例子中33是39的generator,39是51的generator,51是57的generator,以下類推。有些數有不只一個generator,例如:101有2個generators,91和100。如果一個數沒有generator,那他就是一個self-number。比100小的self-number:1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97
本問題是:找出所有小於或等於1000000的self-numbers。
33, 39, 51, 57, 69, 84, 96,111, 114, 120, 123, 129, 141, ……
我們稱n為d(n)的generator。在上面的例子中33是39的generator,39是51的generator,51是57的generator,以下類推。有些數有不只一個generator,例如:101有2個generators,91和100。如果一個數沒有generator,那他就是一個self-number。比100小的self-number:1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97
本問題是:找出所有小於或等於1000000的self-numbers。
輸入說明 :
No input.
輸出說明 :
範例輸入 :
No input.
範例輸出:
1 3 5 7 9 20 31 42 53 64 | | <-- a lot more numbers | 9903 9914 9925 9927 9938 9949 9960 9971 9982 9993 | | |
提示 :
標籤:
出處:
public class d044 {
public static void main(String[] args) {
int[] arr=new int[2000000]; //只開1000000的話 後面在加會爆掉
for(int i=1;i<=1000000;i++)
arr[i]=0;
for(int i=1;i<=1000000;i++){
int total=0;
String before=String.valueOf(i);
for(int j=0;j<before.length();j++){
total+=Integer.parseInt(String.valueOf(before.charAt(j)));
}
int after=i+total;
arr[after]=1;
}
for(int i=1;i<=1000000;i++){
if(arr[i]==0){
System.out.println(i);
}
}
}
}
沒有留言:
張貼留言