// PascalABC.NET 3.2, сборка 1362 от 14.12.2016 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('N='); Range(1,n).Select(i->(i.ToString,(i*i).ToString)). Where(t->t[0]=t[1].Right(t[0].Length)).Println; end.
Пример N= 1000 (1,1) (5,25) (6,36) (25,625) (76,5776) (376,141376) (625,390625)
2. А вот так примерно учат в большинстве школ
var n,i,j,li,li2:integer; si,si2:string; begin Write('N= '); Read(n); for i:=1 to n do begin Str(i,si); li:=Length(si); Str(i*i,si2); li2:=Length(si2); si2:=Copy(si2,li2+1-li,li); if si=si2 then Write('(',si,',',i*i,') ') end end.
ОТДЕЛ Задание+; ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\", Приём;
ПЕР N, сч, ч, кв: ЦЕЛ;
УКАЗ N := Приём.Число(); ОТ сч := 0 ДО N ВЫП кв := сч * сч; ч := сч; КОЛЬЦО ПОКА ч > 0 И кв > 0 ВЫП ЕСЛИ ч ОСТАТОК 10 # кв ОСТАТОК 10 ТО ВЫХОД КОН; ч := ч ДЕЛИТЬ 10; кв := кв ДЕЛИТЬ 10 КОН; Вывод.ЧЦел("^%d", сч, 0, 0, 0) КОН КОН
КОН Задание.
Отдел "Приём", раз уж Издатель не успел его включить в выпуск (хотя стоило бы рассматривать это как стандартный ввод):
ОТДЕЛ Приём; ИСПОЛЬЗУЕТ ОС ИЗ "...\Отделы\Обмен\", КОС ИЗ "...\Отделы\Обмен\", Ввод ИЗ "...\Отделы\Обмен\", Вывод ИЗ "...\Отделы\Обмен\", Знак ИЗ "...\Отделы\Иное\";
ЗАДАЧА Строка-(строка+: РЯД ИЗ ЗНАК); (* Текстовая строка *) ПЕР отКлавиш: Ввод.ОтКлавиш; отМышки: Ввод.ОтМышки; Счётчик: ЦЕЛ; УКАЗ Счётчик := 0; КОЛЬЦО ЕСЛИ КОС.Опрос(отКлавиш, отМышки) = Ввод.клавиши ТО ЕСЛИ отКлавиш.знак = 0DX ТО ЕСЛИ Счётчик < РАЗМЕР(строка) ТО строка[Счётчик] := 0X КОН; ВЫХОД АЕСЛИ отКлавиш.код = 08H ТО ЕСЛИ Счётчик > 0 ТО строка[Счётчик-1] := 0X; УМЕНЬШИТЬ(Счётчик); Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак) КОН АЕСЛИ (отКлавиш.код = 2DH) И (ОС.РазмерЦепочкиОбменника() # 0) ТО ПОКА Счётчик > 0 ВЫП строка[Счётчик-1] := 0X; УМЕНЬШИТЬ(Счётчик); Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X) КОН; ОС.ЦепочкуИзОбменника(строка); ЕСЛИ ОС.РазмерЦепочкиОбменника() > РАЗМЕР(строка) ТО Счётчик := РАЗМЕР(строка) ИНАЧЕ Счётчик := ОС.РазмерЦепочкиОбменника() КОН; Вывод.Цепь(строка) АЕСЛИ отКлавиш.знак = 0X ТО ИНАЧЕ ЕСЛИ Счётчик < РАЗМЕР(строка) ТО строка[Счётчик] := отКлавиш.знак; УВЕЛИЧИТЬ(Счётчик); Вывод.ЗнакЦепи(отКлавиш.знак) КОН КОН ИНАЧЕ ОС.Спать(50) КОН КОН КОН Строка;
ЗАДАЧА Число-(): ЦЕЛ; (* Целое число *) ПЕР отКлавиш: Ввод.ОтКлавиш; отМышки: Ввод.ОтМышки; Счётчик, сч: ЦЕЛ; Результат: ЦЕЛ; Буфер: ДОСТУП К РЯД ИЗ ЗНАК; Отрицательное: КЛЮЧ; УКАЗ Результат := 0; Счётчик := 0; Отрицательное := ОТКЛ; КОЛЬЦО ЕСЛИ КОС.Опрос(отКлавиш, отМышки) = Ввод.клавиши ТО ЕСЛИ отКлавиш.знак = 0DX ТО ЕСЛИ Отрицательное ТО ВОЗВРАТ -Результат ИНАЧЕ ВОЗВРАТ Результат КОН АЕСЛИ отКлавиш.код = 08H ТО ЕСЛИ Счётчик > 0 ТО Результат := Результат ДЕЛИТЬ 10; Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак); УМЕНЬШИТЬ(Счётчик) АЕСЛИ Отрицательное ТО Отрицательное := ОТКЛ; Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак) КОН АЕСЛИ (отКлавиш.код = 2DH) И (ОС.РазмерЦепочкиОбменника() # 0) ТО ПОКА Счётчик > 0 ВЫП УМЕНЬШИТЬ(Счётчик); Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X) КОН; ЕСЛИ Отрицательное ТО Отрицательное := ОТКЛ; Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X) КОН; Результат := 0; СОЗДАТЬ(Буфер, ОС.РазмерЦепочкиОбменника()); ОС.ЦепочкуИзОбменника(Буфер^); ЕСЛИ (Буфер[0] >= "0") И (Буфер[0] <= "9") ТО Результат := Результат * 10 + (ВЦЕЛ(Буфер[0]) - ВЦЕЛ("0")); Вывод.ЗнакЦепи(Буфер[0]); УВЕЛИЧИТЬ(Счётчик) АЕСЛИ Буфер[0] = "-" ТО Вывод.ЗнакЦепи("-"); Отрицательное := ВКЛ КОН; ОТ сч := 1 ДО РАЗМЕР(Буфер^)-1 ВЫП ЕСЛИ (Буфер[сч] >= "0") И (Буфер[сч] <= "9") ТО Результат := Результат * 10 + (ВЦЕЛ(Буфер[сч]) - ВЦЕЛ("0")); Вывод.ЗнакЦепи(Буфер[сч]); УВЕЛИЧИТЬ(Счётчик) КОН КОН; Буфер := ПУСТО АЕСЛИ (отКлавиш.знак = "-") И (НЕ Отрицательное) ТО ЕСЛИ Результат = 0 ТО Отрицательное := ВКЛ; Вывод.ЗнакЦепи("-") КОН АЕСЛИ отКлавиш.знак = 0X ТО АЕСЛИ (Результат < МАКС(ЦЕЛ) ДЕЛИТЬ 10) И ((отКлавиш.знак >= "0") И (отКлавиш.знак <= "9")) ТО Результат := Результат * 10 + (ВЦЕЛ(отКлавиш.знак) - ВЦЕЛ("0")); Вывод.ЗнакЦепи(отКлавиш.знак); УВЕЛИЧИТЬ(Счётчик) КОН ИНАЧЕ ОС.Спать(50) КОН КОН КОН Число;
ЗАДАЧА Ждать-; (* Простаиваем, пока не будет нажата любая клавиша *) ПЕР отКлавиш: Ввод.ОтКлавиш; отМышки: Ввод.ОтМышки; УКАЗ ПОКА КОС.Опрос(отКлавиш, отМышки) # Ввод.клавиши ВЫП ОС.Спать(50) КОН КОН Ждать;
роутер
Объяснение:
проверено