Код тестировала
И локально у себя в ИДЕЕ, и при запуске на сайте код отрабатывает быстро (за пару секунд).
Результат выдает верный.
Но валидатор ругается именно на бесконечный цикл.
Где он его увидел???package com.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
/*
Алгоритмы-числа
*/
public class Solution {
public static long[] getNumbers(long N) {
ArrayList<Long> vneshnyj_array = new ArrayList<>();
long N_minus_1 = N - 1;
for (long i = N_minus_1; i > 0; i--) {
long S = N_minus_1;
long S_dubl1 = S;
long S_dubl2 = S;
long M = 0;
while (S_dubl1 > 0) {
M++;
S_dubl1 = S_dubl1 / 10;
}
ArrayList<Long> arrayList = new ArrayList<>();
for (int j = 0; j < M; j++) {
long a = S_dubl2 % 10;
S_dubl2 = (S_dubl2 - a) / 10;
arrayList.add(a);
}
long result1 = 0;
for (long k = 0; k < arrayList.size(); k++) {
result1 = (long) (result1 + Math.pow(arrayList.get((int) k), M));
}
if (S == result1) {
vneshnyj_array.add(S);
}
N_minus_1--;
}
Collections.sort(vneshnyj_array);
long[] result = new long[vneshnyj_array.size()];
for (int bbb = 0; bbb < vneshnyj_array.size(); bbb++) {
result[bbb] = vneshnyj_array.get(bbb);
//System.out.println(result[bbb]);
}
return result;
}
public static void main(String[] args) {
long a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000)));
long b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000000)));
b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
}
}