Вроде решается быстро, но валидатор не принимает, говорит что долго. Подскажите, пожалуйста, что не так? Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407] memory 368 time = 0 [1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834] memory 368 time = 0 [1, 2, 3, 4, 5, 6, 7, 8, 9, 153] memory 368 time = 0 Process finished with exit code 0
package com.javarush.task.task20.task2025;

/*
Алгоритмы-числа
*/

import java.util.ArrayList;
import java.util.Arrays;

public class Solution {

    public static long[] getNumbers(long N) {
    if (N <= 1) return new long[0];
        int S = 1;
        int M = 1;
        int razryad = 10;
        ArrayList<Long> longList = new ArrayList<>();

        while(S < N) {

            if(S == razryad) {
                razryad = razryad * 10;
                M++;
            }

            int rslt = 0;
            int number = 0;
            int temp = S;

            while(temp > 0) {
                number = (temp % 10);
                rslt = rslt + (int) Math.pow(number, M);
                temp = temp / 10;
            }

            if((S < N) & (rslt == S)) {
                longList.add((long)S);
            } else if(S > N){
                //System.out.println("Сработал брейк");
                break;
            }

            S++;
        }
        long[] result = new long[longList.size()];
        for(int i = 0; i < longList.size(); i++){
            result[i] = longList.get(i);
        }

        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);

        a = System.currentTimeMillis();
        System.out.println(Arrays.toString(getNumbers(200)));
        b = System.currentTimeMillis();
        System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
        System.out.println("time = " + (b - a) / 1000);
    }

}