Вычислить n-ую сверхстепень двойки по модулю m - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Назовем значение выражения 22n n-ой сверхстепенью числа 2. Таким образом, например, третья сверхстепень числа 2 равна 223 = 28 = 256. Ваша задача – вычислить n-ую сверхстепень двойки по модулю m. Входные данные Входной файл INPUT.TXT содержит два целых числа: n (0 ≤ n ≤ 105) и m (2 ≤ m ≤ 104). Выходные данные В выходной файл OUTPUT.TXT выведите ответ на задачу.

Решение задачи: «Вычислить n-ую сверхстепень двойки по модулю m»

textual
Листинг программы
begin
  var n : Integer;
  var m : Integer;
  ReadLn(n, m);
  var p := BigInteger.Pow(2, n);
  var r := 1;
  while BigInteger.Compare(p, 0) = 1 do
    begin
      p -= 1;
      r := (r * 2) mod m;
    end;
  WriteLn(r);
end.

Объяснение кода листинга программы

  1. Введенные переменные:
    • n (номер переменной 1) - тип Integer (целое число), используется для хранения значения степени двойки.
    • m (номер переменной 2) - тип Integer (целое число), используется для хранения модуля, по которому вычисляется остаток от деления.
  2. Считывание значений переменных n и m с помощью функции ReadLn.
  3. Вычисление n-ой сверхстепени двойки с помощью функции BigInteger.Pow(2, n).
  4. Инициализация переменной r единицей.
  5. Запуск цикла while, который выполняется до тех пор, пока значение p не станет отрицательным.
    • Внутри цикла выполняется операция p -= 1, которая уменьшает значение p на единицу.
    • Вычисляется новое значение r с помощью выражения (r * 2) mod m.
  6. После окончания цикла выводится значение переменной r с помощью функции WriteLn.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы