Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число R. Укажите такое число x, при вводе которого алгоритм печатает двузначное число, сумма цифр которого равна 16. Если таких чисел x несколько, укажите наименьшее из них.
| Бейсик | Python |
|---|---|
DIM X,D,R AS LONG INPUT X R = 0 WHILE X>0 D = X MOD 10 R = 10*R + D X = X \ 10 WEND PRINT R
| x = int(input()) R = 0 while x>0: d = x % 10 R = 10*R + d x = x // 10 print(R)
|
| Паскаль | Алгоритмический язык |
var x,d,R: longint; begin readln(x); R := 0; while x>0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end; writeln(R) end.
| алг нач цел x, d, R ввод x R := 0 нц пока x>0 d := mod(x, 10) R := 10*R + d x := div(x, 10) кц вывод R кон |
| Си++ | |
#include <iostream> using namespace std; int main() { long x,d,R; cin >> x; R = 0; while (x>0) { d = x % 10; R = 10*R + d; x = x / 10; } cout << R << endl; return 0; }
| |
Данный алгоритм печатает на выходе число x записанное в обратном порядке: то есть первая цифра числа x находится на последнем месте, вторая на предпоследнем и так далее.
Разложим 16 на слагаемые так, чтобы одно из слагаемых было как можно больше, а второе как можно меньше: 16 = 7 + 9. Следовательно, наименьшее число, удовлетворяющее условию задачи — 79.
Примечание 1. В ответе просят написать число, которое вводят в программу.
Примечание 2. Необходимо, чтобы сумма цифр в выводе была 16, а не число 16.
Ответ: 79.
Приведём другое решение на языке Python.
for i in range(10000):
x = i
R = 0
while x > 0:
d = x % 10
R = 10 * R + d
x = x // 10
summ = 0
while R > 0:
summ += R % 10
R //= 10
if summ == 16:
print(i)
break

