// PascalABC.NET 3.1, сборка 1201 от 18.03.2016 begin var k:=0; var n:=ReadInteger(); var nmax:=0; while n<>0 do begin Inc(k); if n mod 10 = 0 then if n>nmax then nmax:=n; n:=ReadInteger() end; var cntrl:=ReadInteger(); Writeln('Получено ',k,' чисел'); Writeln('Полученное контрольное значение: ',cntrl); Writeln('Вычисленное контрольное значение: ',nmax); if cntrl=nmax then Writeln('Контроль пройден') else Writeln('Контроль не пройден') end.
Дважды подряд записать трехзначное число — это значит умножить его на 1001. Умножив на 1000, мы получаем исходное число с тремя нулями. Добавляем к полученному числу еще один раз исходное число. Получается число, в записи которого дважды повторяются цифры исходного числа. Последовательно разделить на 13, 11 и 7 – значит разделить число на произведение 13 * 11* 7, которое равно 1001. Получается, что мы число сначала умножаем на 1001, а после делим на 1001. Естетственно, у нас получится исходное число: (n * 1001) / (13 * 11 * 7) = (n * 1001) / 1001 = n.
begin
var k:=0;
var n:=ReadInteger();
var nmax:=0;
while n<>0 do begin
Inc(k);
if n mod 10 = 0 then
if n>nmax then nmax:=n;
n:=ReadInteger()
end;
var cntrl:=ReadInteger();
Writeln('Получено ',k,' чисел');
Writeln('Полученное контрольное значение: ',cntrl);
Writeln('Вычисленное контрольное значение: ',nmax);
if cntrl=nmax then Writeln('Контроль пройден')
else Writeln('Контроль не пройден')
end.
Тестовое решение:
53
16
40
9
10
32
74
0
40
Получено 7 чисел
Полученное контрольное значение: 40
Вычисленное контрольное значение: 40
Контроль пройден
Последовательно разделить на 13, 11 и 7 – значит разделить число на произведение 13 * 11* 7, которое равно 1001.
Получается, что мы число сначала умножаем на 1001, а после делим на 1001. Естетственно, у нас получится исходное число:
(n * 1001) / (13 * 11 * 7) = (n * 1001) / 1001 = n.