INFOpudding - ИТ в образовании и не только
Четверг, 04.03.2021, 18:59
» Меню сайта
» Категории раздела
Информатика и ИКТ [0]
Программирование [6]
Математика [0]
» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

» Форма входа
Главная » Статьи » Олимпиадные задания » Программирование

Решение задания 1 Всероссийской олимпиады по информатике 2010 (Вариант 1)
Задача 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 не создан, программа выдаст ошибку.
Категория: Программирование | Добавил: anna (03.09.2011) | Автор: Anna
Просмотров: 1361 | Комментарии: 1 | Рейтинг: 2.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
» Поиск
» Учебные заведения
Брянский государственный университет академика И.Г. Петровского Брянская государственная инженерно-технологическая академия
Copyright MyCorp © 2021|Бесплатный конструктор сайтов - uCoz