Ниже на пяти языках программирования записан алгоритм, который вводит натуральное число x, выполняет преобразования, а затем выводит одно число. Укажите наименьшее возможное значение x, при вводе которого алгоритм выведет число 18.
| Бейсик | Python |
|---|---|
DIM X, A, B, D AS INTEGER INPUT X A = 0: B = 10 WHILE X > 0 D = X MOD 9 IF D > A THEN A = D IF D < B THEN B = D X = X \ 9 WEND PRINT A*B
| x = int(input()) a=0; b=10 while x > 0: d = x % 9 if d > a: a = d if d < b: b = d x = x // 9 print(a*b)
|
| Паскаль | Алгоритмический язык |
var x, a, b, d: longint; begin readln(x); a := 0; b := 10; while x > 0 do begin d := x mod 9; if d > a then a := d; if d < b then b := d; x := x div 9 end; writeln(a*b); end.
| алг нач цел x, a, b, d ввод x a := 0; b := 10 нц пока x > 0 d := mod(x,9) если d > a то a := d все если d < b то b := d все x := div(x,9) кц вывод a*b кон
|
| С++ | |
#include <iostream> using namespace std; int main() { int x, a, b, d; cin >> x; a = 0; b = 10; while (x > 0) { d = x % 9; if (d > a) a = d; if (d < b) b = d; x = x / 9; } cout << a*b << endl; return 0; }
| |
Алгоритм ищет наибольшую и наименьшую цифру числа в девятеричной системе счисления и выводит на экран их произведение. Ясно, что наименьшее число будет представлять собой девятеричное число, состоящее из двух цифр. Разложим число 18 на множители так, чтобы ни одно из них не превосходило 8 и чтобы одно из слагаемых было как можно меньше, такое разложение: 3 и 6. Следовательно, искомое число: 369 = 3 · 9 + 6 = 33.
Ответ: 33.
Приведём другое решение на языке Python.
for i in range(1, 10000):
x = i
a = 0;
b = 10
while x > 0:
d = x % 9
if d > a: a = d
if d < b: b = d
x = x // 9
if (a * b) == 18:
print(i)
break

