Условие задачи
Ниже на пяти языках программирования записан алгоритм. Получив на вход натуральное десятичное число x, этот алгоритм печатает два числа: L и M. Укажите наибольшее число x, при вводе которого алгоритм выводит сначала 2, а потом 3.
Бейсик | Python |
DIM X, L, M AS INTEGER INPUT X L = 0 M = 0 WHILE X > 0 M = M + 1 IF X MOD 2 <> 0 THEN L = L + X MOD 8 END IF X = X \ 8 WEND PRINT L PRINT M |
x = int(input()) L = 0 M = 0 while x > 0: M = M + 1 if x % 2 != 0: L = L + x % 8 x = x // 8 print(L) print(M) |
Алгоритмический язык | Паскаль |
алг нач цел x, L, M ввод x L := 0 M := 0 нц пока x > 0 M := M + 1 если mod(x, 2) <> 0 то L := L + mod(x, 8) все x := div(x, 8) кц вывод L, нс, M кон |
var x, L, M: integer; begin readln(x); L := 0; M := 0; while x > 0 do begin M := M + 1; if x mod 2 <> 0 then L := L + x mod 8; x := x div 8 end; writeln(L); writeln(M) end. |
С++ | |
#include <iostream> using namespace std; int main(){ int x, L, M; cin >> x; L = 0; M = 0; while (x > 0) { M = M + 1; if(x % 2 != 0) { L = L + x % 8; } x = x / 8; } cout << L << endl << M << endl; return 0; } |
Решение
L = 2, M = 3
M – это количество цифр в 8-ричной записи числа, а L – это сумма его нечетных цифр.
Наибольшее число в 8-ричной системе, содержащее 3 цифры с суммой нечётных цифр = 2, это \(611_8 = 393\)
Ответ
393.