Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 10.
| Бейсик | 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) print(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; }
| |
Число а равняется количеству цифр в х, а b - сумме чётных цифр х.
Чтобы число было побольше, в старший разряд поставим 9. Сумма оставшихся двух цифр - 10, и они чётные.
10 = 2 + 8 = 4 + 6
82 > 64
В итоге получили число 982.
Приведём другое решение на языке Python.
for i in range(10000, 1, -1):
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 == 10:
print(i)
break

