Вычислить 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.
Объяснение кода листинга программы
- Введенные переменные:
- n (номер переменной 1) - тип Integer (целое число), используется для хранения значения степени двойки.
- m (номер переменной 2) - тип Integer (целое число), используется для хранения модуля, по которому вычисляется остаток от деления.
- Считывание значений переменных n и m с помощью функции ReadLn.
- Вычисление n-ой сверхстепени двойки с помощью функции BigInteger.Pow(2, n).
- Инициализация переменной r единицей.
- Запуск цикла while, который выполняется до тех пор, пока значение p не станет отрицательным.
- Внутри цикла выполняется операция p -= 1, которая уменьшает значение p на единицу.
- Вычисляется новое значение r с помощью выражения (r * 2) mod m.
- После окончания цикла выводится значение переменной r с помощью функции WriteLn.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д