На компе выдаёт:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407]
memory 256 (насколько я понимаю, 2 Мб)
time = 0
[1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834]
memory 289 (тоже 2 Мб)
time = 289
В телефоне валик выдаёт цифры побольше (memory 3220 (25 Мб, если я правильно перевел) time = 0 / memory 3220 time = 0). На всех пунктах в задании стоят вопросы.
package com.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Solution {
public static long[] getNumbers(long N) {
List<Long> list= new ArrayList<>();
for (long S =1; S < N; S++) {
byte M = (byte) (Math.log10(S) + 1);
long x = S;
long result = 0;
for (; x > 0; x /= 10)
result += (long) Math.pow(x % 10, M);
if (S == result) list.add(S);
}
long[] longs = new long[list.size()];
for (int i = 0; i < list.size(); i++)
longs[i] = list.get(i);
return longs;
}
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);
}
}