Почему метод getNumbers(long N) нe принимает аргумент больше чем макс значение Integer?
package com.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/*
Алгоритмы-числа
*/
public class Solution {
public static long[] getNumbers(long N) {
List<Long> numbers = new ArrayList<>();
for (long S = 1; S < N; S++) {
int M = String.valueOf(S).length();
long sum = 0;
long a;
long b = S;
//System.out.println("S = " + S);
for (int i = 0; i < M; i++) {
//System.out.println("iteration Nr" + (i + 1));
a = S % exponentiate(10, M - i - 1);
//System.out.println("a = " + a);
//System.out.println("b = " + b);
long res = (b - a) / exponentiate(10, M - i - 1);
//System.out.println("res = " + res);
sum += exponentiate(res, M);
b = a;
//System.out.println();
}
//System.out.println("sum = " + sum + "\n" + "--------------------");
if (sum == S) {
numbers.add(S);
}
}
long[] result = new long[numbers.size()];
for (int i = 0; i < result.length; i++) {
result[i] = numbers.get(i);
}
return result;
}
static int exponentiate(int number, int n) {
int result = number;
for (int i = 1; i < n; i++) {
result *= number;
}
if (n > 0) {
return result;
} else if (n < 0) {
return 1 / result;
} else {
return 1;
}
}
static long exponentiate(long number, int n) {
long result = number;
for (int i = 1; i < n; i++) {
result *= number;
}
if (n > 0) {
return result;
} else if (n < 0) {
return 1 / result;
} else {
return 1;
}
}
public static void main(String[] args) {
long[] res = getNumbers(8210);
System.out.println(Arrays.toString(res));
}
}