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) {
        long[] result = null;
        List<Long> list = new ArrayList<>();
        for(long k = 1; k < N; k++) {
            if(getResult(k) == k) {
                list.add(k);
                System.out.println(k);
                if(k > 4679307778L){
                    break;
                }
            }
        }
        result = new long[list.size()];
        for(int i = 0; i < list.size(); i++){
            result[i] = list.get(i);
        }
            return result;
    }

    public static int getCountNumbers(long N) {
        int result = 0;
        while (N > 0) {
            N = N / 10;
            result++;
        }
        return result;
    }

    public static long getResult(long N){
        int numbers = getCountNumbers(N);
        long resNumber = 0;
        while(N > 0) {
            int buf = (int) (N % 10);
            N /= 10;
            resNumber += Math.pow(buf, numbers);
        }
        return resNumber;
    }

    public static void main(String[] args) {
        System.out.println(Long.MAX_VALUE);
        System.out.println(Arrays.toString(getNumbers(100)));
        System.out.println(Arrays.toString(getNumbers(Long.MAX_VALUE)));
    }
}