• Помогите!!!
    4. Первоклассные числа
    Ограничения: время - 200мс, память - 256МБ
    Если взять натуральное число и найти сумму квадратов его цифр, затем сумму
    квадратов цифр результата и так далее, то через несколько шагов для некоторых из
    чисел получится число 1. Такие числа будем называть первоклассными. Например,
    первоклассным будет число 19, так как 1^2+9^2=82, 8^2+2^2=68, 6^2+8^2=100, 1^2+0^2+0^2=1.
    числа 2 или 5 первоклассными не являются.
    Напишите программу, которая находит количество первоклассных чисел среди
    чисел в диапазоне от А до В включительно.
    Первая строка ввода содержит два целых чисел А, В.
    Вывести одно целое число - количество первоклассных чисел среди чисел в
    диапазоне от А до В.

    Пример ввода1. Пример вывода1

    5. 4
    4 5 6 3 7.
    Пример ввода 2. Пример вывода 2
    3
    9 5 6. 1

Ответы 6

  • Мне просто было интересно, какие ограничения на A и B? Ответ я так и не получил.
  • Ну вот поскольку ответов вообще нет ни на какие вопросы, оно все так, как оно есть.
  • Так ограничения
    • Автор:

      demarion
    • 5 лет назад
    • 0
  • Ввод 1 20 вывод 5.
    • Автор:

      fry
    • 5 лет назад
    • 0
  • Понятно. Но это не ограничения. Это контрольный пример. Можете пробовать))
    • Автор:

      koletwsm
    • 5 лет назад
    • 0
  • PascalABC.NET 3.4.2, сборка 1847 от 28.10.2018Внимание! Если программа не работает, обновите версию!

    function СуммаКвадратовЦифр(Число: integer): integer;

    begin

     Result := 0;

     while Число > 0 do

     begin

       Result += Sqr(Число mod 10);

       Число := Число div 10

     end

    end;

    function ЧислоПервоклассное(Число: integer): boolean;

    begin

     Число := Abs(Число); // защита от злобных буратинок

     var L:=new SortedSet<integer>;

     L.Add(Число);

     repeat

       case Число of

         0, 2, 3:

           begin

             Result := False;

             Exit

           end;

         1:

           begin

             Result := True;

             Exit

           end;

         else

         begin

           Число := СуммаКвадратовЦифр(Число);

           if L.Contains(Число) then

           begin

             Result:=False;

             Exit

           end

           else L.Add(Число)

         end

       end

     until False // бесконечный цикл

    end;

    begin

     var (НижняяГраница, ВерхняяГраница) := ReadInteger2;

     var Количество := 0;

     for var ОчередноеЧисло := НижняяГраница to ВерхняяГраница do

       if ЧислоПервоклассное(ОчередноеЧисло) then Inc(Количество);

     Количество.Println

    end.

    1 10020
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years