На заданном числовом промежутке найти пары чисел, произведение которых содержит цифры большего множителя - Free Pascal
Формулировка задачи:
Помогите с задачек
На заданном числовом промежутке требуется найти пары чисел, произведение которых содержит цифры большего множителя, "раздвинутые вклинившимися" нулями, например, 111*91=10101, 480*85=40800(задача Рачинского)
Решение задачи: «На заданном числовом промежутке найти пары чисел, произведение которых содержит цифры большего множителя»
textual
Листинг программы
function zero(m:integer):longint;
var n,k:longint;
begin
n:=m mod 10;
m:=m div 10;
k:=10;
while m>0 do
begin
n:=(m mod 10)*10*k+n;
m:=m div 10;
k:=k*100;
end;
zero:=n
end;
var a,b,i,j,k:longint;
c,d:longint;
begin
writeln('Введите диапазон чисел');
readln(a,b);
k:=0;
for i:=a to b-1 do
for j:=i+1 to b do
begin
c:=i*j;
d:=zero(j);
if c=d then
begin
k:=1;
writeln(i,'*',j,'=',c);
end;
end;
if k=0 then write('Таких пар чисел нет');
readln
end.
Объяснение кода листинга программы
Этот код на языке Free Pascal выполняет поиск пар чисел на заданном числовом промежутке, произведение которых содержит цифры большего множителя. Список действий в коде:
- Функция zero(m: integer) принимает целое число m и возвращает наибольший общий делитель (НОД) чисел m и 10.
- В цикле while происходит деление числа m на 10 и обновление переменных n и k.
- В каждой итерации цикла пока переменная m больше 0 происходит умножение чисел m и n, обновление переменных n и k, а затем деление числа m на 10.
- В конце функции zero(m: integer) возвращается значение переменной n.
- В цикле for происходит перебор чисел в заданном диапазоне.
- Для каждой пары чисел i и j выполняется проверка на равенство произведения этих чисел значению переменной zero(j).
- Если условие выполняется, то переменной k присваивается значение 1 и выводится сообщение с числом i, числом j и их произведением.
- После завершения циклов выводится сообщение о наличии или отсутствии пар чисел, удовлетворяющих условию.