Ниже записана программа. Получив на вход число , эта программа печатает два числа. Укажите наименьшее из таких чисел, при вводе которых алгоритм печатает сначала 3, а потом 8.
| Паскаль | Си | Python | ||
| var x, L, M: integer; begin readln(x); L:=0; M:=0; while x > 0 do begin L:= L + 1; if x mod 2 = 1 then M:= M + x mod 10; x:= x div 10; end; writeln(L); write(M); end. |
#include <stdio.h> int main(void) { int L, M, x; scanf(″%d″, &x); L = 0; M = 0; while (x > 0) { L = L + 1; if (x % 2 == 1) M = M + (x % 10); x = x / 10; } printf(″%d\n%d″, L, M); } |
|
Решение:
L = L + 1; L — счетчик. Он показывает, сколько раз цикл повторяется.
if (x % 2 == 1) M = M + (x % 10); В каждом повторении, если число нечетно, наименьшая цифра добавляется к M. M — это сумма нечетных цифр в числе.
x = x / 10; При каждом повторении наименьшая цифра удаляется.
L=3: Число имеет 3 цифры.
M=8: Сумма нечетных цифр равна 8.
Укажите наименьшее из таких чисел: _ _ _ = 1+0+7=8
Ответ: 107
