Получить последовательность десятичных цифр числа 2 в 100 степени - Pascal
Формулировка задачи:
Помогите, пожалуйста, с задачами по теме "
обработка массива с использование операторов цикла с условием
": 1. Получить последовательность десятичных цифр числа 2 в 100 степени 2. Дано натуральное число n. Определить количестворазличных
цифр в нём. 3. Получить последовательность десятичных цифр числа 100!Решение задачи: «Получить последовательность десятичных цифр числа 2 в 100 степени»
textual
Листинг программы
uses crt;
const base = 2; {основание}
st = 100; {степень}
var
s,tt : string;
c : char;
i,j,k,a,b,len : integer;
begin
clrscr;
s := '2'; {начальная строка}
for i:=1 to st-1 do{от1 до 99}
begin
tt := s;{запоминаем строку}
len := length(tt);{длина запомненной строки 1,2,3..}
s := '';{сбрасываем строку}
k := 0;
for j:=1 to len do
begin
a := (ord(tt[j])-48)*base + k; {умножаем столбиком каждый раз новое число}
b := a mod 10; {последняя цифра}
k := a div 10; {перенос}
s := s + chr(b+48);{новая строка без последнего переноса}
end;
if k <> 0 then s := s + chr(k+48);{добавляем в конец последний перенос}
end;
len := length(s); {переворачиваем строку}
for i:=1 to len div 2 do
begin
c := s[len-i+1];
s[len-i+1] := s[i];
s[i] := c;
end;
writeln(s);
readln;
end.
Объяснение кода листинга программы
- В начале кода подключается библиотека crt, которая обеспечивает функции для работы с числовыми значениями и вводом/выводом.
- Затем определяются константы base и st, которые задают основание и степень соответственно.
- Далее объявляются переменные s, tt, c, i, j, k, a, b и len. Переменная s инициализируется строкой '2', а переменная tt будет использоваться для хранения промежуточных результатов. Переменная c будет использоваться для хранения символа, который будет добавлен к строке s. Переменные i, j, k, a и b будут использоваться для обработки чисел. Переменная len будет использоваться для хранения длины строки tt.
- Затем начинается цикл for, который выполняется от 1 до st-1. На каждой итерации цикла переменная tt запоминает текущее значение строки s, а переменная len запоминает длину этой строки. Затем переменная s сбрасывается в пустую строку, а переменная k устанавливается в 0.
- Внутри цикла for выполняется вложенный цикл, который обрабатывает каждый символ в строке tt. На каждой итерации внутреннего цикла переменная a вычисляется как произведение текущего символа на основание (в данном случае 2), умноженное на k. Переменная b вычисляется как последняя цифра числа a. Переменная k устанавливается в k/10 (перевод в новую позицию). Затем к строке s добавляется символ, соответствующий последней цифре числа a, используя переменную c.
- Если k не равно 0, то к строке s добавляется символ, соответствующий k-й цифре числа a.
- После завершения внутреннего цикла переменная len устанавливается равной длине строки s.
- Затем выполняется еще один цикл for, который переворачивает строку s. На каждой итерации внутреннего цикла переменная c устанавливается в символ, следующий по порядку в строке s, а переменная s устанавливается в s[len-i+1].
- В конце кода выводится значение переменной s.
- Код завершается вызовом функций readln и clrscr, чтобы очистить экран и прочитать введенные данные.