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

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

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

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

Задание 1 #16219

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

\[\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; & \\ & \} & \\ \hline \end{array}\]

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

\(k = 4\)

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

\[1000 - 4x \leq 0\]

\[-4x \leq -1000\]

\[4x \geq 1000\]

\[x \geq 250\]

Ответ: 250

Задание 2 #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

Задание 3 #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

Задание 4 #16221

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

\[\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 n\; :=\; 5; \\ \quad n\; =\; n\; *\; 2 & \quad int\; s,\; \; n\; =\; 5; & \quad while\; s\; >\; 23\; do\; begin \\ print(\; n\; ) & \quad cin\; >>\; s; & \quad\quad s\; :=\; s\; -\; 5; \\ \quad & \quad while \; (\; s\; >\; 23\; )\; \{ & \quad\quad n\; :=\; n\; *\; 2; \\ & \quad\quad s\; =\; s\; -\; 5; & \quad end; \\ & \quad\quad n\; =\; n\; *\; 2; & writeln(n); \\ & \quad \} & end. \\ & \quad cout\; <<\; n\; <<\; endl; & \quad \\ & \} & \\ \hline \end{array}\]

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

\(x = 6\)

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

Так как x = 6, то \(s \leq 53\)

\(s = 53\)

Ответ: 53

Задание 5 #16220

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

\[\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\; 100\; <\; (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\; 100\; <\; (2 * s*s)\; do\; begin \\ print(n) & \quad n\; =\; 0; & \quad\quad s\; :=\; s\; -\; 1; \\ & \quad while\; (100\; <\; (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 станет меньше 100 или равным ему. Это случится, когда s = 7. Тогда программе понадобится 8 итераций для того чтобы получить s = 7.

Тогда \(n = 2 * 8 = 16\)

Ответ: 16

Задание 6 #16217

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

\[\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\quad n\; :=\; n\; +\; 1; \\ & \quad\quad s\; =\; s\; +\; n; & \quad end; \\ & \quad\quad n\; =\; n\; +\; 1; & \quad writeln(n); \\ & \quad \} & end. \\ & \quad cout\; <<\; n\; <<\; endl;& \quad \\ & \} & \quad \\ \hline \end{array}\]

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

Цикл завершится тогда, когда значение переменной s превысит 110. Составим неравенство: \(s + n+(n+1) \geq 110\) (n=5)

\(s + 2*5+1 \geq 110\)

\(s \geq 110-11\)

\(s \geq 99\)

\(s = 99\)

Ответ: 99

Задание 7 #16216

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

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

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

Переменная n увеличивает себя каждый раз на уменьшенное s c 14 до 1.

Получим, что \(s = 14+13+12...+1= \frac{14+1}2\cdot n=\frac{15}2\cdot14=15*7=105\)

Ответ: 105