Подскажите, что он от меня хочет? При каких любых входных данных? При отрицательном значении никаких исключений не вылетает.
package com.javarush.task.task20.task2025;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
public class Solution {
private static Set<Long> replica = new TreeSet<>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
long N = Long.parseLong(reader.readLine());
reader.close();
long start = System.currentTimeMillis();
long[] array = getNumbers(N);
long end = System.currentTimeMillis() - start;
long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
SimpleDateFormat sdf = new SimpleDateFormat("ss.SSS");
System.out.println("Time = " + sdf.format(new Date(end)));
System.out.println("Memory = " + memory / 1048576);
// Set<Long> armstrongNumbers = new TreeSet<>(Arrays.stream(array).boxed().collect(Collectors.toSet()));
// for (Long x : armstrongNumbers) {
// if (x != 0) {
// System.out.println(x);
// }
// }
for (Long x : array) {
System.out.println(x);
}
}
public static long[] getNumbers(long N) {
for (int i = 0; i <= N; i++) {
if (isNumberUnique(i)) {
long sumOfPowers = sum(i);
if (isArmstrongNumber(sumOfPowers)) {
if (sumOfPowers != 0)
replica.add (sumOfPowers);
}
}
}
Long[] res = replica.toArray(new Long[replica.size()]);//new long[replica.size()];
long[] result = new long[res.length];
for (int i = 0; i < res.length; i++) {
result[i] = res[i];
}
return result;
}
private static boolean isArmstrongNumber (long number) {
if (sum(number) == number) {
return true;
}
return false;
}
private static boolean isNumberUnique (long number) {
long lastDigit = 0;
long currentDigit;
while (number > 0) {
currentDigit = number%10;
if (lastDigit > currentDigit) {
return false;
}
lastDigit = currentDigit;
number /= 10;
}
return true;
}
public static long sum (long a) {
long addition = 0;
long d = String.valueOf(a).length();
long b = a%10;
while (a > 0) {
addition += Math.pow(b,d);
a /= 10;
b = a%10;
}
return addition;
}
}
//package com.javarush.task.task20.task2025;
//
//import java.io.*;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
///*
//Алгоритмы-числа
//*/
//public class Solution {
//
// public static void main(String[] args) throws IOException {
// BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// int N = Integer.parseInt(reader.readLine());
// reader.close();
// long start = System.currentTimeMillis();
// long[] arr = getNumbers(N);
// long end = System.currentTimeMillis() - start;
// long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
// SimpleDateFormat sdf = new SimpleDateFormat("ss.SSS");
// System.out.println("Time = " + sdf.format(new Date(end)));
// System.out.println("Memory = " + memory / 1048576);
// for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
// }
// }
//
// public static long[] getNumbers(long N) {
// List<Long> list = new ArrayList<>();
//
// for (int i = 0; i < N; i++) {
// int[] tmp = new int[String.valueOf(i).length()];
// int del = i;
// int M = 0;
// long multypl = 0;
// while (del > 0) {
// tmp[M] = del%10;
// del = del/10;
// M++;
// }
// for (Integer x : tmp) {
// multypl += Math.pow(x,M);
// }
// if (i == multypl) {
// list.add(multypl);
// }
// }
//// for (Long x : list){
//// System.out.println(x);
//// }
// long[] result = new long[list.size()];
// for (int i = 0; i < list.size(); i++) {
// result[i] = list.get(i);
// }
//
// return result;
// }
//}