public class testtttt {
static long[][] sumArray = getSumNumberArray();
static List<Long> listArmst = new ArrayList<>();
public static long[] getNumbers(long N){
long[] result = null;
int[] cifry = {0,1,2,3,4,5,6,7,8,9,10};
long chislo = 10;
long sum;
while (chislo<N){
//System.out.println(chislo);
int a = (int) ((chislo/10)%10);
if (a==0){a=1;}
chislo += a;
sum = getSum(chislo);
if (sum == getSum(sum)&&!listArmst.contains(sum)){listArmst.add(sum);}
System.out.println(chislo+" sum="+sum);
while (chislo%10>0){
chislo+=1;
sum = getSum(chislo);
if (sum == getSum(sum)&&!listArmst.contains(sum)){listArmst.add(sum);}
System.out.println(chislo+" sum="+sum);
}
}
result = new long[listArmst.size()];
Collections.sort(listArmst);
for (int i=0;i<listArmst.size();i++){
result[i]=listArmst.get(i);
}
return result;}
public static long getSum(long chislo){
if (chislo==0){return 0;}
else {
int stepen = (int) Math.ceil(Math.log10(chislo + 0.5));
long sum=0;
char[] arrChislo = Long.toString(chislo).toCharArray();
for (int i=0;i<arrChislo.length;i++){
sum+=sumArray[Integer.parseInt(arrChislo[i]+"")][stepen-1];
}
return sum;}
}
public static long[][] getSumNumberArray(){
long[][] arr = new long[10][19];
int a = 0;
for(int b=1;b<20;a++){
if (a==10){a=-1;b++;}
else{arr[a][b-1]=(long)Math.pow(a, b);
}
}
return arr;
}
public static void main(String[] args) {
Date date1 = new Date();
long start = date1.getTime();
long[] arrArmstrong = getNumbers(1067);
Date date2 = new Date();
long finish = date2.getTime();
System.out.println(Arrays.toString(arrArmstrong));
System.out.println((finish-start));
}
}