Ниже записана программа. Получив на вход число x, эта программа печатает два числа a и b. При каком наименьшем значении x после выполнения программы на экран будет выведено два числа 10, а затем 6.
| C++ | Python |
|---|---|
#include <iostream> using namespace std;
int main() { int a = 0, b = 0, x; cin >> x; while (x > 0) { int c = x % 10; a = a + c; if(b < c) b = c; x = x / 10; } cout << a << endl << b; return 0; }
| x = int(input()) a, b = 0, 0 while x > 0: c = x % 10 a = a + c if b < c: b = c x = x // 10 print(a) print(b)
|
| Паскаль | Алгоритмический язык |
var x, c, a, b: longint; begin readln(x); a := 0; b := 0; while x > 0 do begin c := x mod 10; a := a + c; if b < c then b := c; x := x div 10; end; writeln(a); write(b); end.
| алг нач цел x, a, b, c a := 0 b := 0 нц пока x > 0 c := mod(c, 10) a := a + c если b < c то b := c конец если x := div(x, 10) кц вывод a вывод b кон |
Алгоритм перебирает в переменной c значения разрядов числа. Причем в a сохраняется сумма всех разрядов, в b — максимальное значение.
Следовательно, мы имеем число с суммой разрядов 10 и максимальным разрядом 6. Минимальное число с такими характеристиками — 46.
Ответ: 46.
Приведём другое решение на языке Python.
for i in range(10000):
x = i
a = 0
b = 0
while x > 0:
c = x % 10
a = a + c
if b < c:
b = c
x = x // 10
if a == 10 and b == 6:
print(i)
break

