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

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

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

Анализ условия в цикле while

Задание 1 #16204

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

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

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

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

Составим неравенство \(s + 9x \geqslant 149\) (где x - количество итераций, т.е. \(x = 10\))

Получим, что \(s \geqslant 149 - 90\)

\(s \geqslant 59\)

\(s = 59\)

Ответ: 59

Задание 2 #16205

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

\[\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\; <\; 62: & int\; main() \; \{ & \quad readln\; (s); \\ \quad s\; =\; s\; +\; 7 & \quad int\; s,\; n; & \quad n\; :=\; 1; \\ \quad n\; =\; n\; *\; 3 & \quad cin\; >>\; s; & \quad while\; s\; <\; 62\; do \\ print(n) & \quad n\; =\; 1; & \quad begin \\ & \quad while\; (s\; <\; 62)\; \{ & \quad\quad s\; :=\; s\; +\; 7; \\ & \quad\quad s\; =\; s\; +\; 7; & \quad\quad n\; :=\; n\; *\; 3; \\ & \quad\quad n\; =\; n\; *\; 3; & \quad end; \\ & \quad \} & \quad writeln(n) \\ & \quad cout\; <<\; n\; <<\; endl; & end. \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

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

Переменная n увеличивает себя в три раза и в конце будет равняться 729, то есть количество итераций будет равно 6, так как \(3^6 = 729\).

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

Получим, что \(s \geqslant 62 - 42\)

\(s \geqslant 20\)

\(s = 20\)

Ответ: 20

Задание 3 #16206

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

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

Программа ищет сумму натурального ряда различных s, удвоенный квадрат которых меньше либо равен 200.

Ответ: 55

Задание 4 #16207

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

\[\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\; <\; 110: & int\; main()\; \{ & \quad readln(s); \\ \quad s\; =\; s\; +\; n & \quad int\; s,\; \; n\; =\; 5; & \quad n\; :=\; 5; \\ \quad n\; =\; n\; +\; 1 & \quad cin\; >>\; s; & \quad while\; s\; <\; 110\; do\; begin \\ print( n ) & \quad while(\; s\; <\; 110\; )\; \{ & \quad\quad s\; :=\; s\; +\; n; \\ \quad & \quad\quad s\; =\; s\; +\; n; & \quad\quad n\; :=\; n\; +\; 1; \\ & \quad\quad n\; =\; n\; +\; 1; & \quad end; \\ & \quad \} & \quad writeln(n); \\ & \quad cout\; <<\; n; & end. \\ & \quad return \; 0; & \quad \\ & \} & \quad \\ \hline \end{array}\]

Заметим, что начальное значение переменной n равно 5, конечное – 25. Программе понадобится 20 итераций для того чтобы получить из 5 –> 25.

Цикл завершится тогда, когда значение переменной s превысит, либо будет равно 110. На каждой итерации значение прибавляемой к s переменной n будет меняться. Сложение начнется с n равного 5 и закончится равным 24. Перед составлением нужного неравенства узнаем сумму арифметической прогрессии от 5 до 24:

\( S_{20} = \cfrac{(5+24)*20}{10} = 290 \)

Теперь можем найти s из неравенства

\(s + S_{20} >= 110\)

\(s >= -180\)

Таким образом, наименьшее s равно -180.

Ответ: -180

Задание 5 #16208

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

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

Программа ищет сумму чисел в промежутке \([15;29]\), у которых квадраты кратны 2.

Ответ: 154

Задание 6 #16209

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

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline x\; =\; int(input()) & \#include\; <iostream> & var\; s,\; n,\; x:\; integer; \\ s\; =\; 100 & using\; namespace\; std; & begin \\ n\; =\; 1000 & int\; main() & \quad readln(x); \\ while\; n\; >\; 0: & \{ & \quad s\; :=\; 100; \\ \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\; =\; 100; & \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; & \\ & \quad return \; 0; & \\ & \} & \\ \hline \end{array}\]

Так как сказано по условию, что s в конце равен 25, то мы можем составить уравнение, чтобы узнать количество итераций: \(100 - 15k = 25\) (где k - количество итераций).

\(k = 5\)

Цикл завершится тогда, когда n станет меньше нуля или равным ему. Составим неравенство: \(1000 - kx \leq 0\) (k = 5)

\[1000 - 5x \leq 0\]

\[-5x \leq -1000\]

\[5x \geq 1000\]

\[x \geq 200\]

Ответ: 200

Задание 7 #16210

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

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline s\; =\; 15 & \#include\; <iostream> & var\; s,\; n:\; integer; \\ n\; =\; 0 & using\; namespace\; std; & begin \\ while\; 50\; <\; (2 * s*s): & int\; main()\; \{ & \quad s\; :=\; 15; \\ \quad s\; =\; s\; -\; 1 & \quad int\; n,\; s; & \quad n\; :=\; 0; \\ \quad n\; =\; n\; +\; 2 & \quad s\; =\; 15; & \quad while\; 50\; <\; (2 * s*s)\; do\; begin \\ print(n) & \quad n\; =\; 0; & \quad\quad s\; :=\; s\; -\; 1; \\ & \quad while\; (50\; <\; (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 << \; endl; & \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

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

Тогда \(n = 2 * 10 = 20\)

Ответ: 20