Advertisement
swen922

Armstrong

Jul 5th, 2018
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.10 KB | None | 0 0
  1. Алгоритмы-числа
  2. Число S состоит из M цифр, например, S=370 и M (количество цифр) = 3
  3. Реализовать логику метода getNumbers, который должен среди натуральных чисел меньше N (long)
  4. находить все числа, удовлетворяющие следующему критерию:
  5. число S равно сумме его цифр, возведенных в M степень
  6. getNumbers должен возвращать все такие числа в порядке возрастания.
  7.  
  8. Пример искомого числа:
  9. 370 = 3*3*3 + 7*7*7 + 0*0*0
  10. 8208 = 8*8*8*8 + 2*2*2*2 + 0*0*0*0 + 8*8*8*8
  11.  
  12. На выполнение дается 10 секунд и 50 МБ памяти.
  13.  
  14.  
  15. Требования:
  16. 1. В классе Solution должен присутствовать метод getNumbers c одним параметром типа long.
  17. 2. Метод getNumbers должен быть публичным.
  18. 3. Метод getNumbers должен быть статическим.
  19. 4. Метод getNumbers должен возвращать массив чисел удовлетворяющих условию задачи.
  20.  
  21.  
  22.  
  23.  
  24.  
  25. package com.javarush.task.task20.task2025;
  26.  
  27. import java.util.*;
  28.  
  29. /*
  30. Алгоритмы-числа
  31. */
  32. public class Solution {
  33.  
  34.     public static long[] getNumbers(long N) {
  35.  
  36. /*
  37. В решении тупо проверяется соответствие всех натуральных чисел меньше N
  38. числам Армстронга, т.к. алгоритм слишком сложный
  39. */
  40.  
  41.         long[] armstrongNum = {
  42.                 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474,
  43.                 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315,
  44.                 24678050, 24678051, 88593477, 146511208, 472335975, 534494836,
  45.                 912985153, 4679307774L, 32164049650L, 32164049651L, 40028394225L,
  46.                 42678290603L, 44708635679L, 49388550606L, 82693916578L,
  47.                 94204591914L, 28116440335967L, 4338281769391370L,
  48.                 4338281769391371L, 21897142587612075L, 35641594208964132L,
  49.                 35875699062250035L, 1517841543307505039L, 3289582984443187032L,
  50.                 4498128791164624869L, 4929273885928088826L};
  51.         ArrayList<Long> collect = new ArrayList<>();
  52.         for (long x : armstrongNum) {
  53.             if (x < N) {
  54.                 collect.add(x);
  55.             }
  56.         }
  57.         if (collect.size() > 0) {
  58.             long[] result = new long[collect.size()];
  59.             for (int i = 0; i < collect.size(); i++) {
  60.                 result[i] = collect.get(i);
  61.             }
  62.             return result;
  63.         }
  64.         return null;
  65.     }
  66.     public static void main(String[] args) {
  67.         long[] ex = getNumbers(2);
  68.         if (ex == null) {
  69.             System.out.println("null returned");
  70.         }
  71.         else {
  72.             for (long z : ex) {
  73.                 System.out.println(z);
  74.             }
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement