Геометрическая прогрессия
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\]
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\]
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\]
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\), именно его и выведет на экран программа.
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\).
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\).
Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\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\), именно его и выведет на экран программа.