Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которого алгоритм печатает сначала 3, а потом 16
| Бейсик | Python |
|---|---|
DIM X, A, B AS INTEGER INPUT X A = 0 B = 0 WHILE X > 0 A = A + 1 IF X MOD 2 = 0 THEN B = B + X MOD 10 END IF X = X \ 10 WEND PRINT A PRINT B
| x = int(input()) a = 0; b = 0 while x > 0: a = a + 1 if x % 2 ==0: b += x%10 x=x // 10 print(a, b)
|
| Паскаль | Алгоритмический язык |
program b20; var x, a, b: integer; begin readln(x); a := 0 b := 0; while x > 0 do begin a := a + 1; if x mod 2 = 0 then b := b + x mod 10; x := x div 10; end; writeln(a); write(b); end.
| алг нач цел x, a, b ввод x a := 0 b := 0 нц пока x > 0 a := a + 1 если mod(x,2)=0 то b := b + mod(x,10)          все          x := div(x,10) кц вывод a, нс, b кон |
| Си++ | |
#include <iostream> using namespace std; int main() { int x, a, b; cin >> x; a = 0; b = 0; while (x > 0){ a = a + 1; if (x%2 == 0) { b = b+x%10; } x = x / 10 } cout << a << endl << b << endl; return 0; }
| |
Поскольку a = 3, значит, while выполнился 3 раза, а т. к. while работает по количеству разрядов числа x, то x лежит в промежутке от 100 до 999. Поскольку b = 16, значит, сумма четных цифра числа x равна 16. Значит, нужно минимальное трехзначное число, сумма четных цифр которого равна 16. Это число 188.
Ответ: 188.
Приведём другое решение на языке Python.
for i in range(10000):
x = i
a = 0
b = 0
while x > 0:
a = a + 1
if x % 2 == 0:
b += x % 10
x = x // 10
if a == 3 and b == 16:
print(i)
break

