L и M. Укажите наибольшее из таких чисел x, при вводе которых алгоритм
Условие
| Ниже записана программа. Получив на вход число x , эта программа печатает два числа, L и M. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7. Бэйсик | Паскаль |
|---|---|
| DIM X, L, M AS INTEGER INPUT X L=0: M=0 WHILE X > 0 L = L+1 M = M +(X MOD 10) X = X \ 10 WEND PRINT L PRINT M | var x, L, M: integer;begin readln(x); L:=0; M:=0; while x>0 do begin L:=L + 1; M:=M + (x mod 10); x:=x div 10; end;writeln(L); write(M);end. |
| Си++ | Алгоритмический |
| #include <iostream>using namespace std;int main(){ int x, L, M; cin >> x; L=0; M=0; while (x>0){ L = L+1; M = M +(x%10); x = x/10; } cout << L << endl << M endl;} | алгначцел x, L, Mввод xL:=0; M:=0нц пока x>0 L:=L+1 M:=M+mod(x,10) x:=div(x,10)кцвывод L, нс, Mкон |
| Python | |
| x = int(input())L = 0M = 0while x > 0: L += 1 M += x % 10 x = x // 10print(L)print(M) |
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Рассмотрим цикл, число шагов которого зависит от изменения переменной x: while x > 0 do begin ... x:= x div 10; end; Т. к. оператор div оставляет только целую часть от деления, то при делении на 10 это равносильно отсечению последней цифры. Из приведенного цикла видно, что на каждом шаге от десятичной записи x отсекается последняя цифра до тех пор, пока все цифры не будут отсечены, то есть x не станет равно 0; поэтому цикл выполняется столько раз, сколько цифр в десятичной записи введенного числа, при этом число L столько же раз увеличивается на
Осталось ещё 3 шага
Следовательно, конечное значение L совпадает…
Из этих цифр составим наибольшее число…
Приведём другое решение на языке Python. for…
Бесплатно · займёт минуту