Задача о системах счисления - Pascal
Формулировка задачи:
Дано число Х(1 ≤ X ≤ 10^12) в десятичной системе счисления
Вывести систему счисления с минимальной основой, в которой число Х будет иметь одинаковые цифры.
Пример:
3 ----2
1. «3» – это «11» в системе счисления с основой 2.
Решение задачи: «Задача о системах счисления»
textual
Листинг программы
program test; var x: uint64; Base: uint64; Dividend, Remainder, LastDigit: uint64; Res: boolean; XisPrime: boolean; begin readln(X); XisPrime := True; Base := 2; while Base < X do begin Res := True; Dividend := X; LastDigit := X mod Base; XisPrime := XisPrime and (LastDigit <> 0); repeat Remainder := Dividend mod Base; Dividend := Dividend div Base; Res := Res and (Remainder = LastDigit); until Dividend = 0; if Res then break; Inc(Base); if (Base > round(sqrt(X))) and XisPrime then Base := X - 1; end; writeln(Base); end.
Объяснение кода листинга программы
- Объявляется переменная
x
типа uint64. - Объявляется переменная
Base
типа uint64. - Объявляются переменные
Dividend
,Remainder
,LastDigit
типа uint64. - Объявляется переменная
Res
типа boolean. - Объявляется переменная
XisPrime
типа boolean и инициализируется значением True. - Считывается значение переменной
x
с помощью функции readln. - Устанавливается значение переменной
XisPrime
как True. - Устанавливается начальное значение переменной
Base
как 2. - Создается цикл while, который выполняется пока
Base
меньшеX
. - Внутри цикла устанавливается значение переменной
Res
как True. Dividend
устанавливается равнымx
.LastDigit
устанавливается равным остатку от деленияx
наBase
.- Переменная
XisPrime
устанавливается как логическое И между ее текущим значением и проверкой, чтоLastDigit
не равен 0. - Происходит цикл repeat-until, в котором вычисляется остаток от деления
Dividend
наBase
, далееDividend
делится наBase
. - Переменная
Res
устанавливается как логическое И между ее текущим значением и проверкой, что остаток равенLastDigit
. - Цикл повторяется, пока
Dividend
не равно 0. - Если
Res
истинно, то программа выходит из цикла. - Увеличивается значение переменной
Base
на 1. - Если
Base
больше, чем целая часть от квадратного корня изX
иXisPrime
истинно, тоBase
устанавливается равнымX - 1
. - Значение
Base
выводится с помощью функции writeln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д