Ниже на четырёх языках программирования записана программа, которая вводит натуральное число x, выполняет преобразования, а затем выводит одно число. Укажите наименьшее возможное значение x, при вводе которого программа выведет число 120.
| C++ | Python |
|---|---|
#include <iostream> using namespace std;
int main() { int x, a; cin >> x; a = 1; while (x > 0) { a *= x % 11; x = x / 11; } cout << a << endl; return 0; }
| x = int(input()) a = 1 while x > 0: a *= x % 11 x = x // 11 print(a)
|
| Паскаль | Алгоритмический язык |
var x, a: integer; begin readln(x); a := 1; while x > 0 do begin a := a * (x mod 11); x := x div 11 end; writeln(a) end.
| алг нач цел x, a ввод x a := 1 нц пока x > 0 a := a * mod(x,11) x := div(x,11) кц вывод a кон |
Заметим, что число x должно быть трёхзначным. Поскольку нам необходимо найти наименьшее x, а число 120 можно получить умножением трёх чисел, каждое из которых меньше 11.
Необходимо получить одиннадцатиричное число, у которого произведение цифр второго и первого разрядов равно 12. Следовательно, поскольку необходимо найти наименьшее возможное число x, у которого цифры второго и первого разрядов после произведения дают 12, число x должно выглядеть так 26A11 = 31810.
Ответ: 318.
Приведём другое решение на языке Python.
for i in range(10000):
x = i
a = 1
while x > 0:
a *= x % 11
x = x // 11
if a == 120:
print(i)
break

