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

6. Анализ простейших программ

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

Анализ условия в цикле while (страница 2)

Задание 8 #16222

Определите, при каком наибольшем введённом значении переменной s программа выведет число 10000. Для Вашего удобства программа представлена на трёх языках программирования.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; int(input()) & \#include\; <iostream> & var\; s,\; n:\; integer; \\ n\; =\; 1000000 & using\; namespace\; std; & begin \\ while\; s\; >=\; 120: & int\; main() \; \{ & \quad readln\; (s); \\ \quad s\; =\; s\; -\; 14 & \quad int\; s,\; n; & \quad n\; :=\; 1000000; \\ \quad n\; =\; n\; //\; 10& \quad cin\; >>\; s; & \quad while\; s\; >=\; 120\; do \\ print(n) & \quad n\; =\; 1000000; & \quad begin \\ & \quad while\; (s\; \; >=\; 120)\; \{ & \quad\quad s\; :=\; s\; -\; 14; \\ & \quad\quad s\; =\; s\; -\; 14; & \quad\quad n\; :=\; n\; div\; 10;\\ & \quad\quad n\; =\; n\; /\; 10; & \quad end; \\ & \quad \} & \quad writeln(n); \\ & \quad cout\; <<\; n\; <<\; endl; & end. \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

Цикл завершится после того, как значение переменной s станет больше или равно 120.

Переменная n уменьшает себя в 10 раз и в конце будет равняться 10000, то есть количество итераций будет равно 2, так как \(\frac{1000000}{10 * 10} = 10000)\).

Составим неравенство \(s - 14x < 120\) (где x - количество итераций, т.е. \(x = 2\))

Получим, что \(s < 28 + 120\)

\(s < 148\)

\(s = 147\)

Ответ: 147

Задание 9 #16223

Определите, при каком наибольшем введённом значении переменной s программа выведет число 4096. Для Вашего удобства программа представлена на трёх языках программирования.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; int(input()) & \#include\; <iostream> & var\; s,\; n:\; integer; \\ n\; =\; 1 & using\; namespace\; std; & begin \\ while\; s\; >\; 89: & int\; main() \; \{ & \quad readln\; (s); \\ \quad s\; =\; s\; -\; 12 & \quad int\; s,\; n; & \quad n\; :=\; 1; \\ \quad n\; =\; n\; *\; 2 & \quad cin\; >>\; s; & \quad while\; s\; >\; 89\; do \\ print(n) & \quad n\; =\; 1\; ; & \quad begin \\ & \quad while\; (s\; \; >\; 89)\; \{ & \quad\quad s\; :=\; s\; -\; 12; \\ & \quad\quad s\; =\; s\; -\; 12; & \quad\quad n\; :=\; n\; *\; 2; \\ & \quad\quad n\; =\; n\; *\; 2; & \quad end; \\ & \quad \} & \quad writeln(n); \\ & \quad cout\; <<\; n\; <<\; endl; & end. \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

Цикл завершится после того, как значение переменной s станет меньше либо равна 89.

Переменная n увеличивает себя в два раза и в конце будет равняться 4096, то есть количество итераций будет равно 12, так как \(2^{12} = 4096\).

Составим неравенство \(s - 12x \leq 89\) (где x - количество итераций, т.е. \(x = 12\))

Получим, что \(s \leq 89 + 144\)

\(s \leq 233\)

\(s = 233\)

Ответ: 233

Задание 10 #16232

Определите, при каком наибольшем введённом значении переменной s программа выведет число 2560. Для Вашего удобства программа представлена на трёх языках программирования.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; int(input()) & \#include\; <iostream> & var\; s,\; n:\; integer; \\ n\; =\; 5 & using\; namespace\; std; & begin \\ while\; s\; >\; 23: & int\; main()\; \{ & \quad readln\; (s); \\ \quad s\; =\; s\; -\; 5 & \quad int\; s,\; \; n\; =\; 5; & \quad n\; :=\; 5; \\ \quad n\; =\; n\; *\; 2 & \quad cin\; >>\; s; & \quad while\; s\; >\; 23\; do\; begin \\ print(\; n\; ) & \quad while(\; s\; >\; 23\; )\; \{ & \quad\quad s\; :=\; s\; -\; 5; \\ \quad & \quad\quad s\; =\; s\; -\; 5; & \quad\quad n\; :=\; n\; *\; 2 \\ & \quad\quad n\; =\; n\; *\; 2; & \quad end; \\ & \quad \} & \quad writeln(n); \\ & \quad cout\; <<\; n; & end. \\ & \} & \quad \\ & \quad & \\ \hline \end{array}\]

Конечное значение переменной n равно 2560, начальное - 5. Составим уравнение: \(5 * 2^x = 2560\) (x - количество итераций)

\(x = 9\)

Цикл завершится тогда, когда s станет меньше либо равно 23. Составим неравенство: \(s - 5x \leq 23\)

Так как x = 9, то \(s \leq 68\)

\(s = 68\)

Ответ: 68

Задание 11 #16230

Определите, при каком наименьшем целом введённом значении переменной x программа выведет число 25. Для Вашего удобства программа представлена на трёх языках программирования.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline x\; =\; int(input()) & \#include\; <iostream> & var\; s,\; n,\; x:\; integer; \\ s\; =\; 115 & using\; namespace\; std; & begin \\ n\; =\; 1000 & int\; main() & \quad readln(x); \\ while\; n\; >\; 0: & \{ & \quad s\; :=\; 115; \\ \quad s\; =\; s\; -\; 15 & \quad int\; x; & \quad n\; :=\; 1000; \\ \quad n\; =\; n\; -\; x & \quad cin\; >>\; x; & \quad while\; n\; >\; 0\; do\; begin \\ print(s) & \quad int\; s\; =\; 115; & \quad\quad s\; :=\; s\; -\; 15; \\ & \quad int\; n\; =\; 1000; & \quad\quad n\; :=\; n\; -\; x; \\ & \quad while\; (n\; >\; 0)\; \{ & \quad end; \\ & \quad\quad s\; =\; s\; -\; 15; & \quad writeln(s); \\ & \quad\quad n\; =\; n\; -\; x; & end. \\ & \quad \} & \\ & \quad cout\; <<\; s\; <<\; endl; & \\ & \} & \\ \hline \end{array}\]

Цикл завершится после того, как значение переменной n станет меньше либо равна 0.

От переменной s отнимают 15 шесть раз и в конце будет равняться 25, то есть количество итераций будет равно 6, так как \(s-6\cdot15=25 =>s=115 \).

Составим неравенство \(n - 6x \leq 0\) (где x - то, что будем отнимать от n шесть раз)

Получим, что \(1000 \leq 6\cdot x\)

\(\dfrac{1000}6 \leq x\)

\(x \geq \dfrac{1000}6\)

\(x \geq 166,6(6)\)

\(x = 167\)

Ответ: 167

Задание 12 #16231

Определите, что выведет программа.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; 19 & \#include\; <iostream> & var\; s,\; n:\; integer; \\ n\; =\; 0 & using\; namespace\; std; & begin \\ while\; 150\; <\; 2 * s*s: & int\; main()\; \{ & \quad s\; :=\; 19; \\ \quad s\; =\; s\; -\; 1 & \quad int\; n,\; s; & \quad n\; :=\; 0; \\ \quad n\; =\; n\; +\; 2 & \quad s\; =\; 19; & \quad while\; 150\; <\; 2 * s*s\; do\; begin \\ print(n) & \quad n\; =\; 0; & \quad\quad s\; :=\; s\; -\; 1; \\ & \quad while\; (150\; <\; 2\ *\ s\; *\; s)\; \{ & \quad\quad n\; :=\; n\; +\; 2 \\ & \quad\quad s\; =\; s\; -\; 1; & \quad end; \\ & \quad\quad n\; =\; n\; +\; 2; & \quad writeln(n); \\ & \quad \} & end. \\ & \quad cout\; <<\; n; & \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

Цикл завершится, когда удвоенный квадрат переменной s станет меньше 150 или равным ему. Это случится, когда s = 8. Тогда программе понадобится 11 итераций для того чтобы получить s = 8.

Тогда \(n = 2 * 11 = 22\)

Ответ: 22

Задание 13 #16229

Определите, что выведет программа.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; 0 & \#include\; <iostream> & var\; s,\; i:\; integer; \\ for\; i\; in\; range(14,\; 33): & using\; namespace\; std; & begin \\ \quad if\; (i\; *\; i)\; \%\; 4\; ==\; 0: & int\; main() & \quad s\; :=\; 0; \\ \quad\quad s\; +=\; i // 2 & \{ & \quad for\; i\; :=\; 14\; to\; 32\; do \\ print(s) & \quad int\; s\; =\; 0; & \quad\quad if\; (i\; *\; i)\; mod\; 4\; =\; 0\; then \\ & \quad for\; (int\; i\; =\; 14;\; k\; <\; 33;\; i++)\; \{ & \quad\quad\quad s\; :=\; s\; +\; i\ div\ 2; \\ & \quad\quad if\; ((i\; *\; i)\; \%\; 4\; ==\; 0) & \quad writeln(s); \\ & \quad\quad\quad s\; +=\; i / 2; & end. \\ & \quad \} & \\ & \quad cout\; <<\; s\; <<\; endl; & \\ & \} & \\ \hline \end{array}\]

Условием захода во второе условие является проверка того, делится ли \(i^2\) на 4, т.е. делится ли \(i\) на 2.

Тогда мы можем сказать, что программа ищет сумму четных чисел в промежутке \([14;32]\).

\(\dfrac{14}2+\dfrac{16}2+\dfrac{18}2...+\dfrac{30}2+\dfrac{32}2=7+8+9...+15+16=115\)

Ответ: 115

Задание 14 #16233

Определите, при каком наибольшем введённом значении переменной s программа выведет число 1. Для Вашего удобства программа представлена на трёх языках программирования.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; int(input()) & \#include\; <iostream> & var\; s,\; n:\; integer; \\ n\; =\; 1000000 & using\; namespace\; std; & begin \\ while\; s\; >=\; 240: & int\; main() \; \{ & \quad readln\; (s); \\ \quad s\; =\; s\; -\; 12 & \quad int\; s,\; n; & \quad n\; :=\; 1000000; \\ \quad n\; =\; n\; //\; 10 & \quad cin\; >>\; s; & \quad while\; s\; >=\; 240\; do \\ print(n) & \quad n\; =\; 1000000; & \quad begin \\ & \quad while\; (s\; \; >=\; 240)\; \{ & \quad\quad s\; :=\; s\; -\; 12; \\ & \quad\quad s\; =\; s\; -\; 12; & \quad\quad n\; :=\; n\; div\; 10; \\ & \quad\quad n\; =\; n\; /\; 10; & \quad end; \\ & \quad\} & \quad writeln(n); \\ & \quad cout\; <<\; n\; <<\; endl; & end. \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

Цикл завершится после того, как значение переменной s станет меньше 240.

Переменная n уменьшает себя в 10 раз и в конце будет равняться 1, то есть количество итераций будет равно 6, так как \(\frac{1000000}{10 * 10 * 10 * 10 * 10 * 10 } = 1\).

Составим неравенство \(s - 12x < 240\) (где x - количество итераций, т.е. \(x = 6\))

Получим, что \(s < 72 + 240\)

\(s < 312\)

\(s = 311\)

Ответ: 311