如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小 生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。即216=198+1+9+8。
package test0913;
import java.util.ArrayList;
public class SCY {
public static void main(String[] args) {
System.out.println(FindNumber(216));
System.out.println(FindNumber(121));
System.out.println(FindNumber(2005));
}
public static ArrayList<String> changeToString(int n){
ArrayList<String> arrayList=new ArrayList<String>();
for(int i=0;i<n;i++){
arrayList.add(i+"");
}
return arrayList;
}
public static int FindNumber(int n){
ArrayList<String> arrayList=changeToString(n);
for(String s:arrayList){
int t=Integer.parseInt(s);
for(int j=0;j<=s.length()-1;j++){
t+=Integer.parseInt(s.charAt(j)+"");
}
if(t==n){
return Integer.parseInt(s);
}
}
return 0;
}
}