Ниже на четырёх языках программирования записана программа, которая вводит натуральное число x, выполняет преобразования, а затем выводит два числа. Укажите наибольшее возможное значение x, при вводе которого программа выведет числа 14 и 8.
| 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, нс кон |
Необходимо получить девятеричное число, произведение цифр которого равно 14, а сумма цифр этого числа, меньших 5, равна 8. Число 14 можно получить произведением чисел 2 и 7. Поскольку необходимо найти наибольшее число, число 8 можно получить суммой двойки и шести цифр «1». Таким образом, в девятеричной системе счисления число будет выглядеть как 721111119. В десятичной системе счисления это число равно 34610095.
Ответ: 34610095.
Приведём другое решение на языке Python.
for i in range(100000000, 0, -1):
x = i
a = 1
b = 0
while x > 0:
d = x % 9
a *= d
if a > 14 or d == 0:# доп проверка, чтобы ускорить алгоритм
break
if d < 5:
b += d
if b > 8: # доп проверка, чтобы ускорить алгоритм
break
x //= 9
if a == 14 and b == 8:
print(i)
break

