Определите количество чисел \(k,\) для которых программа, приведенная ниже, выведет такой же результат, что и для \(k = 14.\) Значение \(k = 14\) включается в подсчет.
\[\begin{array}{|l|l|l|} \hline \text Python & \text{C++} \\ \hline def \; f(x): \; \; & \#include \; <iostream> \; \; \\ \quad \; \; return \; x*x \; \; & using \; namespace \; std; \; \\ i=0 \; \; & int \; f(int \; x) \; \{ \; \; \\ k=int(input()) \; \; &\quad return \; x*x; \; \; \\ while(f(i)<k): \; \; & \} \; \; \\ \quad \; \; i+=1 \; \; & int \; main() \; \{ \; \; \\ print(i) \; \; &\quad int \; k; \; \; \\ \; \; &\quad int \; i = 0; \; \; \\ \; \; &\quad cin>>k; \; \; \\ \; \; &\quad while(f(i)<k) \; \;\\ \; \; &\quad \quad i++; \; \;\\ \; \; &\quad cout<<i; \; \; \\ \; \; &\quad return \; 0; \; \; \\ \; \; &\} \; \; \\ \hline \end{array}\]
Посмотрим, что делает программа. Функция \(f(x)\) считает квадрат переданного ей целого числа. У нас есть переменная \(i,\) изначально равная 0. В цикле мы передаем \(i\) в функцию, т.е. считаем квадрат числа, хранящегося в переменной. Если этот квадрат меньше какого-то введенного числа \(k,\) условие цикла выполнено — и переменную \(i\) мы увеличиваем на единицу, то есть переходим к следующему целому числу. Так мы делаем до тех пор, пока квадрат числа \(i\) не сравняется с числом \(k\) или не превысит его. Что в итоге будет храниться в переменной \(i?\) Последнее число, квадрат которого не превысит или не сравняется с числом \(k,\) причем увеличенное на один: когда мы находим такое последнее число, мы заходим в цикл, т.к. условие выполнено, и добавляем к \(i\) единицу.
Что выведет программа при \(k = 14?\) Теперь мы знаем, как работает программа: ищем последнее число, квадрат которого меньше k = 14, увеличенное на один. Это число 4 — \(3 \cdot 3 = 9\), а уже \(4 \cdot 4 = 16\) — не подходит. Т.к. число увеличено на 1, получаем \(i= 4.\) Теперь вручную прогоним программу и посмотрим, действительно ли это так:
Возьмем \(i= 0: \; 0 \cdot 0 = 0\) — подходит, теперь \(i = 1\).
\(i = 1: \; 1 \cdot 1\) — подходит, теперь \(i = 2\).
\(i = 2: \; 2 \cdot 2\) — подходит, теперь \(i = 3\).
\(i = 3: \; 3 \cdot 3 = 9\) — подходит, теперь \(i = 4\).
\(i = 4: \; 4 \cdot 4 = 16\) — не подходит, выходим из цикла.
Наша задача — найти все числа такие, что 3 — последнее число, квадрат которого меньше \(k.\)
\(k = 9\) не подходит: тогда числа сравняются, а нам нужно строгое неравенство. Значит, и меньшие числа нам не подходят: для них последнее число, квадрат которого меньше \(k,\) будет меньше 3.
\(k = 10\) подходит: \(3 \cdot 3 = 9 < 10\) и \(4 \cdot 4 = 16 > 10.\)
\(k = 11\) подходит: \(3 \cdot 3 = 9 < 11\) и > \(4 \cdot 4 = 16 > 11.\)
\(k = 12\) подходит: \(3 \cdot 3 = 9 < 12\) и > \(4 \cdot 4 = 16 > 12.\)
\(k = 13\) подходит: \(3 \cdot 3 = 9 < 13\) и > \(4 \cdot 4 = 16 > 13.\)
\(k = 14\) подходит: \(3 \cdot 3 = 9 < 14\) и > \(4 \cdot 4 = 16 > 14.\)
\(k = 15\) подходит: \(3 \cdot 3 = 9 < 15\) и > \(4 \cdot 4 = 16 > 15.\)
\(k = 16\) подходит: \(3 \cdot 3 = 9 < 15,\) а для \(i = 4\!: 16 < 16\) не выполнено, значит, \(i = 3\) — последний подходящий квадрат.
\(k = 17\) не подходит: 3 не будет последним квадратом, меньшим \(k,\) им будет 4. Значит, и дальше значения проверять не имеет смысла, они будут возрастать и для всех последний квадрат будет не меньше 4.
Таким образом, нам подошли 7 значений \(k:\) 10, 11, 12, 13, 14, 15, 16. Это и есть наш ответ: 7.
Ответ: 7