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

Геометрическая прогрессия

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела 6. Анализ простейших программ:

Это старая версия каталога задач

Нажмите для перехода на новую версию

Решаем задачи
Задание 1 #12639

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while k <= 10} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=1;\\ s=0;k=1; & \quad k=k*2 & \quad \textit{while k <= 10 do begin}\\ \textit{while (k <= 10) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k*2;\\ k=k*2;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 1&2\\ 3&4\\ 7&8\\ 15&16\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=10)\) не выполняется, значит, последнее значение \(s=15\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) умножается на одно и тоже значение на каждом шаге цикла, а \(s\) суммирует значения \(k\), можно сказать, что мы ищем сумму \(n\) первых членов геометрической прогрессии, где \(k\) — знаменатель прогрессии, \(b_1\) — начальное значение переменной \(k\): \[s=\frac{b_1(k^n-1)}{k-1}\]
Найдем \(n\): цикл перестает выполняться, когда \(k>10\). Т.к. значения \(k\) - степени двойки, оно превысит 10 на 4 шаге цикла(т.к. \(2^4=16\)), следовательно, \(n=4\). Теперь подставим все известные данные в формулу и посчитаем сумму: \[s=\frac{1\cdot(2^4-1)}{2-1}=15\]

Ответ: 15
Задание 2 #12640

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while k <= 230} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=1;\\ s=0;k=1; & \quad k=k*3 & \quad \textit{while k <= 230 do begin}\\ \textit{while (k <= 230) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k*3;\\ k=k*3;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 1&3\\ 4&9\\ 13&27\\ 40&81\\ 121&243\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=230)\) не выполняется, значит, последнее значение \(s=121\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) умножается на одно и тоже значение на каждом шаге цикла, а \(s\) суммирует значения \(k\), можно сказать, что мы ищем сумму \(n\) первых членов геометрической прогрессии, где \(k\) — знаменатель прогрессии, \(b_1\) — начальное значение переменной \(k\): \[s=\frac{b_1(k^n-1)}{k-1}\]
Найдем \(n\): цикл перестает выполняться, когда \(k>230\). Т.к. значения \(k\) - степени тройки, оно превысит 230 на 5 шаге цикла(т.к. \(3^5=243\)), следовательно, \(n=5\). Теперь подставим все известные данные в формулу и посчитаем сумму: \[s=\frac{1\cdot(3^5-1)}{3-1}=121\]

Ответ: 121
Задание 3 #12641

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while k <= 500} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=1;\\ s=0;k=1; & \quad k=k*2 & \quad \textit{while k <= 500 do begin}\\ \textit{while (k <= 500) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k*2;\\ k=k*2;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 1&2\\ 3&4\\ 7&8\\ 15&16\\ 31&32\\ 63&64\\ 127&128\\ 255&256\\ 511&512\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=500)\) не выполняется, значит, последнее значение \(s=511\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) умножается на одно и тоже значение на каждом шаге цикла, а \(s\) суммирует значения \(k\), можно сказать, что мы ищем сумму \(n\) первых членов геометрической прогрессии, где \(k\) — знаменатель прогрессии, \(b_1\) - начальное значение переменной \(k\): \[s=\frac{b_1(k^n-1)}{k-1}\]
Найдем \(n\): цикл перестает выполняться, когда \(k>500\). Т.к. значения \(k\) - степени двойки, оно превысит 500 на 9 шаге цикла(т.к. \(2^9=512\)), следовательно, \(n=9\). Теперь подставим все известные данные в формулу и посчитаем сумму: \[s=\frac{1\cdot(2^9-1)}{2-1}=511\]

Ответ: 511
Задание 4 #12642

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while k <= 700} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+2*k & \quad k:=1;\\ s=0;k=1; & \quad k=k*3 & \quad \textit{while k <= 700 do begin}\\ \textit{while (k <= 700) \{} & print(s) & \quad \quad s:=s+2*k;\\ s=s+2k;& & \quad \quad k:=k*3;\\ k=k*3;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 2&3\\ 8&9\\ 26&27\\ 80&81\\ 242&243\\ 728&729\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=700)\) не выполняется, значит, последнее значение \(s=728\), именно его и выведет на экран программа.

 

Ответ: 728
Задание 5 #12644

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while s <= 300} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=1;\\ s=0;k=1; & \quad k=k*2 & \quad \textit{while s <= 300 do begin}\\ \textit{while (s <= 300) \{} & print(k) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k*2;\\ k=k*2;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 1&2\\ 3&4\\ 7&8\\ 15&16\\ 31&32\\ 63&64\\ 127&128\\ 255&256\\ 511&512\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s<=300)\) не выполняется, значит, последнее значение \(k=512\), именно его и выведет на экран программа.
Второй способ решения
Т.к. \(k\) умножается на одно и тоже значение на каждом шаге цикла, а \(s\) суммирует значения \(k\), можно сказать, что мы ищем сумму \(n\) первых членов геометрической прогрессии, где \(k\) — знаменатель прогрессии, \(b_1\) — начальное значение переменной \(k\): \[s=\frac{b_1(k^n-1)}{k-1}\]
Примем \(2^n=k\), найдем такие \(k\), при которых нарушается условие цикла: \[\frac{1\cdot(2^n-1)}{2-1}>300\]
\[2^n>301\]
Минимальное \(n\), удовлетворяющее данному неравенству: \(n=9\), следовательно, \(k=2^9=512\).

Ответ: 512
Задание 6 #12645

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while s <= 700} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=1;\\ s=0;k=1; & \quad k=k*3 & \quad \textit{while s <= 700 do begin}\\ \textit{while (s <= 700) \{} & print(k) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k*3;\\ k=k*3;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 1&3\\ 4&9\\ 13&27\\ 40&81\\ 121&243\\ 364&729\\ 1093&2187\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s<=700)\) не выполняется, значит, последнее значение \(k=2187\), именно его и выведет на экран программа.
Второй способ решения
Т.к. \(k\) умножается на одно и тоже значение на каждом шаге цикла, а \(s\) суммирует значения \(k\), можно сказать, что мы ищем сумму \(n\) первых членов геометрической прогрессии, где \(k\) - знаменатель прогрессии, \(b_1\) - начальное значение переменной \(k\): \[s=\frac{b_1(k^n-1)}{k-1}\]
Примем \(2^n=k\), найдем такие \(k\), при которых нарушается условие цикла: \(\frac{1\cdot(3^n-1)}{3-1}>700\)
\(3^n>1400\)
\(3^n>1401\)
Минимальное \(n\), удовлетворяющее данному неравенству: \(n=7\), следовательно, \(k=3^7=2187\).

Ответ: 2187
Задание 7 #16033

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=1 & begin\\ \textit{int main() \{} & \textit{while k <= 100} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+3*k & \quad k:=1;\\ s=0;k=1; & \quad k=k*2 & \quad \textit{while k <= 100 do begin}\\ \textit{while (k <= 100) \{} & print(s) & \quad \quad s:=s+3*k;\\ \quad s=s+3*k;& & \quad \quad k:=k*2;\\ \quad k=k*2;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]

Показать решение

Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&1\\ 3&2\\ 9&4\\ 21&8\\ 45&16\\ 93&32\\ 189&64\\ 381&128\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=100)\) не выполняется, значит, последнее значение \(s=381\), именно его и выведет на экран программа.

 

Ответ: 381

1

Рулетка
Вы можете получить скидку в рулетке!