Определите количество чисел для которых программа, приведенная ниже, выведет такой же результат, что и для
Значение
включается в подсчет.
Посмотрим, что делает программа. Функция считает квадрат переданного ей целого числа. У нас есть переменная
изначально равная 0. В цикле мы передаем
в функцию, т.е. считаем квадрат числа, хранящегося в переменной. Если этот квадрат меньше какого-то введенного числа
условие цикла выполнено — и переменную
мы увеличиваем на единицу, то есть переходим к следующему целому числу. Так мы делаем до тех пор, пока квадрат числа
не сравняется с числом
или не превысит его. Что в итоге будет храниться в переменной
Последнее число, квадрат которого не превысит или не сравняется с числом
причем увеличенное на один: когда мы находим такое последнее число, мы заходим в цикл, т.к. условие выполнено, и добавляем к
единицу.
Что выведет программа при Теперь мы знаем, как работает программа: ищем последнее число, квадрат которого меньше k = 14, увеличенное на один. Это число 4 —
, а уже
— не подходит. Т.к. число увеличено на 1, получаем
Теперь вручную прогоним программу и посмотрим, действительно ли это так:
Возьмем — подходит, теперь
.
— подходит, теперь
.
— подходит, теперь
.
— подходит, теперь
.
— не подходит, выходим из цикла.
Наша задача — найти все числа такие, что 3 — последнее число, квадрат которого меньше
не подходит: тогда числа сравняются, а нам нужно строгое неравенство. Значит, и меньшие числа нам не подходят: для них последнее число, квадрат которого меньше
будет меньше 3.
подходит:
и
подходит:
и >
подходит:
и >
подходит:
и >
подходит:
и >
подходит:
и >
подходит:
а для
не выполнено, значит,
— последний подходящий квадрат.
не подходит: 3 не будет последним квадратом, меньшим
им будет 4. Значит, и дальше значения проверять не имеет смысла, они будут возрастать и для всех последний квадрат будет не меньше 4.
Таким образом, нам подошли 7 значений 10, 11, 12, 13, 14, 15, 16. Это и есть наш ответ: 7.