Задача 1. Интересные числа
Петя, выполняя домашнюю работу по
алгебре, обнаружил числа с интересными свойствами: они повторяются в конце
записи своего квадрата. Например, число 6 повторяется в своем квадрате 36=6·6,
25 повторяется в своем квадрате 625=25·25, 76 повторяется в своем квадрате
5676=76·76.
Для заданного интервала [a,b], где 1≤a,b≤250, a<b найти все числа, которые соответствуют найденному Петей правилу.
Формат входных
данных
В первой строке входного файла записаны
два числа a и b.
Формат выходных
данных
В выходной файл нужно вывести найденные
числа (построчно).
Примеры
number.ini
|
number.out
|
1 10
|
1
5
6
|
10 100
|
25
76
|
Теория:
Автоморфное
число —
число, десятичная запись квадрата которого оканчивается цифрами самого этого
числа. Например, число 625² = 390 625, 9 376² = 87 909 376,
890 625² = 793 212 890 625.
Последовательность
автоморфных чисел начинается с 1, 5, 6, 25, 76, 376, 625, 9 376, 90 625,
109 376, 890 625, … [http://ru.wikipedia.org]
Следует
заметить, что не нужно проверять все цифры в
диапазоне от а до b,
достаточно проверить только те которые оканчиваются на 1,5,6.
Программа на языке Pascal:
Вариант
1.
program interesnie_zisla;
var ft:text; {файловая переменная текстового
типа}
a,b:integer; {концы отрезка}
i: integer; {счетчик}
ist,i2st:string; {строковые переменные для хранения
числа и его квадрата соответсвенно}
BEGIN
{Чтение данных из файла number.ini}
Assign(ft,'number.ini');
Reset(ft);
Read(ft,a);
Read(ft,b);
Close(ft);
{Обработка данных с параллельной
записью в файл number.out}
Assign(ft,'number.out'); {процедура связи логического
файла ft с физическим файлом}
Rewrite(ft);
if
((a<b) and (a>=1) and (b<=255)) then {проверка корректности ввода данных}
begin
for
i:=a to b do
if
(i mod 10=5) or (i mod 10=6) or (i mod 10=1) then {отбор чисел оканчивающихся на 1, 5, 6}
begin
str(i,ist);
{перевод числа i в строку}
str(i*i,i2st);
{перевод квадрата числа i в строку}
if
ist=copy(i2st,length(i2st)-length(ist)+1,length(ist)) then writeln(ft,i); {определение оканчивается ли квадрат числа i на i и вывод в случае истинности условия}
end;
end
else
Writeln(ft,'nekorektnii wwod');{сигнал о некорректном вводе данных}
Close(ft);
END. Замечание. В
случае если файл number.ini не создан, программа выдаст
ошибку.
|