var
n, k, s, sa: integer;
begin
k := 0;
s := 0;
sa := 0;
writeln('Введите последовательность, окончание ввода - число 0');
repeat
read(n);
if (n mod 4 = 0) and (n mod 10 = 2) then s := s + n;
if (n <> 0) and (n < 100) then inc(k);
sa := sa + n
until n = 0;
readln;
writeln('Сумма чисел, кратных 4 и заканчивающихся на 2, равна ', s);
writeln('Количество чисел, не больших 100, равно ', k);
writeln('Сумма последовательности равна ', sa);
readln
end.
Объяснение:
program zz1;
var n,n1,n2,n3:integer; //задаем переменные
begin
write('введите заданное трехзначное число');
read(n); //вводим с клавиатуры заданное трехзначное число
n1:=n div 100; //находим первую цифру числа
n2:=(n mod 100) div 10; //находим вторую цифру числа
n3:=n mod 10; //находим третью цифру числа
if (n1 mod 2 = 0)and(n2 mod 2 = 0)and(n3 mod 2 = 0) //проверяем, если все цифры четные, то выводим один ответ, если нет, то другой
then write('все цифры числа четные ') else write('некоторые цифры числа не четные');
Объяснение:
Для того, чтобы перевести число из 10-ой в 2-ю с. с. , нужно разделить его на 2 и выделить остаток, затем частное снова разделить на 2 и выделить остаток. Процесс деления повторять до тех пор, пока в частном не останется 1. Затем, начиная с последнего частного – 1, переписываем все остатки в обратном порядке. Это и есть искомое число
129/2 (целое 64) (остаток 1)
64/2 (целое 32) (остаток 0)
32/2 (целое 16) (остаток 0)
16/2 (целое 8) (остаток 0)
8/2 (целое 4) (остаток 0)
4/2 (целое 2) (остаток 0)
2/2 (целое 1) (остаток 0)
129 = 10000001