Задание 5
Рассмотрим программу:
Var
s, k: integer;
Begin
s := 5;
for k := 1 to 20 do
if (s * k) mod (s - k) = 0 then s := s + 11;
writeln(s);
End.
Давайте разберем программу по шагам:
Инициализация:
Цикл for k := 1 to 20
:
- В каждой итерации проверяется условие
(s * k) mod (s - k) = 0
.
Условие (s * k) mod (s - k) = 0
:
- Это условие проверяет, делится ли произведение
s
и k
на разность s - k
без остатка. Если условие истинно, s
увеличивается на 11.
Давайте рассмотрим, при каких значениях k
условие будет истинным.
- Для
k = 1
: (5 * 1) mod (5 - 1) = 5 mod 4 = 1
, не делится без остатка.
- Для
k = 2
: (5 * 2) mod (5 - 2) = 10 mod 3 = 1
, не делится без остатка.
- Для
k = 3
: (5 * 3) mod (5 - 3) = 15 mod 2 = 1
, не делится без остатка.
- Для
k = 4
: (5 * 4) mod (5 - 4) = 20 mod 1 = 0
, делится без остатка. Поэтому s := s + 11 = 5 + 11 = 16
.
- Для
k = 5
: (16 * 5) mod (16 - 5) = 80 mod 11 = 3
, не делится без остатка.
- Для
k = 6
: (16 * 6) mod (16 - 6) = 96 mod 10 = 6
, не делится без остатка.
- Для
k = 7
: (16 * 7) mod (16 - 7) = 112 mod 9 = 4
, не делится без остатка.
- Для
k = 8
: (16 * 8) mod (16 - 8) = 128 mod 8 = 0
, делится без остатка. Поэтому s := s + 11 = 16 + 11 = 27
.
- Для
k = 9
: (27 * 9) mod (27 - 9) = 243 mod 18 = 9
, не делится без остатка.
- Для
k = 10
: (27 * 10) mod (27 - 10) = 270 mod 17 = 15
, не делится без остатка.
- Для
k = 11
: (27 * 11) mod (27 - 11) = 297 mod 16 = 9
, не делится без остатка.
- Для
k = 12
: (27 * 12) mod (27 - 12) = 324 mod 15 = 9
, не делится без остатка.
- Для
k = 13
: (27 * 13) mod (27 - 13) = 351 mod 14 = 1
, не делится без остатка.
- Для
k = 14
: (27 * 14) mod (27 - 14) = 378 mod 13 = 1
, не делится без остатка.
- Для
k = 15
: (27 * 15) mod (27 - 15) = 405 mod 12 = 9
, не делится без остатка.
- Для
k = 16
: (27 * 16) mod (27 - 11) = 432 mod 11 = 3
, не делится без остатка.
- Для
k = 17
: (27 * 17) mod (27 - 10) = 459 mod 10 = 9
, не делится без остатка.
- Для
k = 18
: (27 * 18) mod (27 - 9) = 486 mod 9 = 0
, делится без остатка. Поэтому s := s + 11 = 27 + 11 = 38
.
- Для
k = 19
: (38 * 19) mod (38 - 19) = 722 mod 19 = 0
, делится без остатка. Поэтому s := s + 11 = 38 + 11 = 49
.
- Для
k = 20
: (49 * 20) mod (49 - 20) = 980 mod 29 = 24
, не делится без остатка.
Таким образом, в конце выполнения цикла значение переменной s
будет равно 49.
Ответ: s = 49
.
Задание 6
Рассмотрим программу:
var
x, a, b: integer;
begin
readln(x);
a := 0;
b := 1;
while x > 0 do
begin
a := a + 1;
b := b * (x mod 10);
x := x div 10;
end;
writeln(a);
write(b);
end.
Эта программа получает на вход число x
, и выполняет следующие действия:
- Инициализирует
a
и b
значениями 0 и 1 соответственно.
- Пока
x
больше 0:
- Увеличивает
a
на 1.
- Умножает
b
на последнюю цифру x
(x mod 10
).
- Делит
x
на 10 (отбрасывая последнюю цифру).
Программа завершает работу, печатая значения a
и b
.
Чтобы программа вывела a = 3
и b = 0
, необходимо следующее:
a = 3
означает, что в числе x
должно быть 3 цифры.
b = 0
означает, что произведение всех цифр числа x
должно быть равно 0. Это возможно только если в числе x
есть хотя бы одна цифра 0
.
Таким образом, наибольшее трехзначное число, содержащее цифру 0, это 900.
Ответ: x = 900
.