Математика ЕГЭ
Русский язык ЕГЭ
Математика 5-7
Математика ОГЭ
Информатика
Физика
Обществознание
Кликните, чтобы открыть меню

22. Программирование – циклы, условия

1. Вспоминай формулы по каждой теме
2. Решай новые задачи каждый день
3. Вдумчиво разбирай решения
Задание 1 #12830

Укажите наибольшее десятичное число, при вводе которого на экране сначала напечатается 3, а затем 6.

\[\begin{array}{|l|l|l|} \hline Python&C++&Pascal\\ \hline x=int(input())&\#include\;<iostream>&\\ L=0&using\;namespace\;std;&var\; x,L,M:\;integer;\\ M=0&int\;main()\; \{&begin\\ while\;x>0:&\quad int \; L, M, x;&\quad readln(x);\\ \quad L=L+1&\quad cin>>x;&\quad L:=0;M:=0;\\ \quad if\;(x\%2)!=0:&\quad L=0;M=0;&\quad while\;x>0\;do\;begin\\ \quad\quad M=M+x\%8&\quad while\;(x>0)\; \{&\quad\quad L:=L+1;\\ \quad x=x//8&\quad\quad L=L+1;&\quad\quad if\;(x\;mod\;2)<>0\;then\\ print\;(L)&\quad\quad if\;(x\%2!=0)\; \{&\quad\quad\quad M:=M+x\;mod\;8;\\ print\;(M)&\quad\quad\quad M=M+x\%8;&\quad\quad x:=x\;div\;8;\\ &\quad\quad \}&\quad end;\\ &\quad\quad x=x/8;&\quad writeln(L); writeln (M);\\ &\quad \}&end.\\ &\quad cout<<L<<endl<<M;&\\ &\}&\\ \hline \end{array}\]

Определимся, что подсчитывает каждая из переменных.

\(L\) — считает количество цифр в числе в восьмеричной системе счисления (т.к. в конце цикла делим нацело на 8),

\(M\) — сумма нечетных цифр числа в восьмеричной системе счисления.

Итак, по условию необходимо найти такое трехзначное восьмеричное число, у которого сумма нечетных чисел равна 6, и при этом оно максимально.

Так как число должно быть максимальным, последние две цифры в восьмеричной системе счисления — 51. Тогда первой цифрой поставим максимальную четную цифру в восьмеричной сс — 6.

Осталось перевести ответ в десятичную сс: \(651_8=425_{10}\)

Ответ: 425

Задание 2 #12833

Укажите наибольшее десятичное число, при вводе которого на экране сначала напечатается 4, а затем 8.

\[\begin{array}{|l|l|l|} \hline Python&C++&Pascal\\ \hline x=int(input())&\#include\;<iostream>&\\ L=0&using\;namespace\;std;&var\; x,L,M:\;integer;\\ M=0&int\;main()\; \{&begin\\ while\;x>0:&\quad int \; L, M, x;&\quad readln(x);\\ \quad L=L+1&\quad cin>>x;&\quad L:=0;M:=0;\\ \quad if\;(x\%2)!=0:&\quad L=0;M=0;&\quad while\;x>0\;do\;begin\\ \quad\quad M=M+x\%8&\quad while\;(x>0)\; \{&\quad\quad L:=L+1;\\ \quad x=x//8&\quad\quad L=L+1;&\quad\quad if\;(x\;mod\;2)<>0\;then\\ print\;(L)&\quad\quad if\;(x\%2!=0)\; \{&\quad\quad\quad M:=M+x\;mod\;8;\\ print\;(M)&\quad\quad\quad M=M+x\%8;&\quad\quad x:=x\;div\;8;\\ &\quad\quad \}&\quad end;\\ &\quad\quad x=x/8;&\quad writeln(L); writeln (M);\\ &\quad \}&end.\\ &\quad cout<<L<<endl<<M;&\\ &\}&\\ \hline \end{array}\]

Определимся, что подсчитывает каждая из переменных.

\(L\) — считает количество цифр в числе в восьмеричной системе счисления (т.к. в конце цикла делим нацело на 8),

\(M\) — сумма нечетных цифр числа в восьмеричной системе счисления.

Итак, по условию необходимо найти такое четырехзначное восьмеричное число, у которого сумма нечетных чисел равна 8, и при этом оно максимально.

Так как сумма нечетных цифр должна быть равна 8, представим \(8=7+1\). Для получения максимального числа поставим 7 первой цифрой, а 1 — последней. Оставшиеся два места заполним максимальными четными цифрами в восьмеричной сс, т.е. шестерками.

Осталось перевести ответ в десятичную сс: \(7661_8=4017_{10}\)

Ответ: 4017

Задание 3 #10597

Ниже на двух языках программирования записан алгоритм. Получив на вход натуральное десятичное число \(x\), этот алгоритм печатает два числа: \(L\) и \(M\). Укажите наибольшее число \(x\), при вводе которого алгоритм печатает сначала 8, а потом 4.

\[\begin{array}{|l|l|} \hline \text{Python} & \text{C++} \\ \hline x=int(input()) \; \; & \#include \; <iostream> \; \; \\ L=1 \; \; & using \; namespace \; std; \; \\ M=0 \; \; & int \; main()\{ \;\; \; \\ while \; x>0: \; \; & \quad int \; x, \; L, \; M; \; \; \\ \quad M+=1 \; \; & \quad cin >> x; \; \; \\ \quad if \; x\%2 \; == \; 0: \; \; & \quad L = 1;\\ \quad \quad L*=(x\%6)\; \; &\quad M = 0; \; \; \\ \quad x//=6 &\quad while \; (x > 0) \{ \; \; \\ print(L) &\quad \quad M \; += \; 1; \; \; \\ print(M) &\quad \quad if \; (x \; \% \; 2 \; == 0) \\ \; \; &\quad \quad \quad L *= (x \; \% \; 6); \; \;\\ \; \; &\quad \quad x /= 6; \; \; \\ \; \; & \quad \} \; \; \\ \; \; & \quad cout << L << endl << M << endl; \; \; \\ \; \; & \quad return \; 0; \; \; \\ \; \; & \} \; \; \\ \hline \end{array}\]

Посмотрим, за что отвечает каждое число. В программе мы делим число \(x\) на 6 до тех пор, пока оно не становится неположительным. С числом \(x\) мы проводим две операции: делим на 6 и берем остаток от деления на 6, значит, делением на 6 мы переводим \(x\) в шестеричную систему счисления.

Мы увеличиваем \(M\) на единицу при каждом делении, значит, \(M\) — это количество разрядов, искомое число семизначное.

Если последняя цифра числа в шестеричной системе четная, мы умножаем на нее число \(L\). Значит, \(L\) — это произведение всех четных цифр, составляющих наше число.

Нам нужно указать наибольшее \(x\). Значит, нам нужно, чтобы старший разряд был максимально большим — иначе число будет меньше, чем могло бы быть. Начнем подбирать его. Вспомним, что мы в шестеричной системе счисления. Значит, максимальная цифра — 5.

Нечетные цифры не влияют на нашу сумму, а максимальная цифра как раз 5. Разложим 8 на произведение четных цифр: получим только \(2\cdot4\) и наоборот. Значит, обязательно должны быть цифры 2 и 4 в составе искомого числа, а все остальные — нечетные, чтобы не испортили произведение. Мы уже поняли, что, чтобы число было максимальным, стоит ставить во все его разряды цифры как можно больше, то есть идеально, когда число состоит из 5, к тому же что 5 нечетная и не меняет \(L\). Помним, что нам нужно, чтобы \(L\) было 8, тогда, как мы уже выяснили, нам нужно, чтобы 2 и 4 входили в состав числа. Значит, т.к. \(2 < 4 < 5\), ставим 2 и 4 в младшие разряды, причем 2 — в первый, т.к. \(2<4\), а 4 — во второй. Получаем число \(5542_{6}\) и не забываем перевести его в десятичную систему: \(5542_{6} = 2 \cdot 6^0 + 4 \cdot 6^1 + 5 \cdot 6^2 + 5 \cdot 6^3 = 1286_{10}\).

Ответ: 1286