Ниже на четырёх языках программирования записана программа, которая вводит натуральное число x, выполняет преобразования, а затем выводит два числа. Укажите наибольшее возможное значение x, при вводе которого программа выведет числа 10 и 9.
| C++ | Python |
|---|---|
#include <iostream> using namespace std;
int main() { int x, a, b, d; cin >> x; a = 1; b = 0; while (x > 0) { d = x%9; a *= d; if (d < 5) b += d; x /= 9; } cout << a << ' ' << b << endl; return 0; }
| x = int(input()) a = 1 b = 0 while x > 0: d = x%9 a *= d if d < 5: b += d x //= 9 print(a, b)
|
| Паскаль | Алгоритмический язык |
var x, a, b, d: integer; begin readln(x); a := 1; b := 0; while x > 0 do begin d := x mod 9; a := a * d; if d < 5 then b := b + d; x := x div 9 end; writeln(a, ' ', b) end.
| алг нач цел x, a, b, d ввод x a := 1 b := 0 нц пока x > 0 d := mod(x,9) a := a * d если d < 5 то b := b + d все кц вывод a, ' ', b, нс кон |
Необходимо получить девятеричное число, произведение цифр которого равно 10, а сумма цифр этого числа, меньших 5, равна 9. Число 10 можно получить произведением чисел 2 и 5. Поскольку необходимо найти наибольшее число, число 9 можно получить суммой двойки и семи цифр «1». Таким образом, в девятеричной системе счисления число будет выглядеть как 5211111119. В десятичной системе счисления это число равно 225397414.
Ответ: 225397414.
Приведём другое решение на языке Python.
for i in range(300000000, 0, -1):
x = i
a = 1
b = 0
while x > 0:
d = x % 9
a *= d
if a > 10 or d == 0: # доп проверка, чтобы ускорить алгоритм
break
if d < 5:
b += d
if b > 9: # доп проверка, чтобы ускорить алгоритм
break
x //= 9
if a == 10 and b == 9:
print(i)
break

