Решение: Количество значений входной переменной
Рассмотрите программу, в которой функция $f(n)=n^3$. Найдите количество различных целых значений входной переменной $k$, при которых программа выводит тот же результат, что и при $k=25$. Значение $k=25$ также включается в подсчёт.
1def f(n): 2 return n*n*n 3 4i = 1 5k = int(input()) 6while f(i) < k: 7 i += 1 8if f(i)-k <= k-f(i-1): 9 print(i) 10else: 11 print(i-1)
Решение по шагам
5 шаговПри $k=25$ цикл увеличивает $i$ до значения $3$, так как $2^3<25$, а $3^3\geq25$. Затем программа сравнивает расстояния от $k$ до соседних кубов $2^3$ и $3^3$.
$$f(3)-25=27-25=2,\quad 25-f(2)=25-8=17$$Так как $2\leq17$, программа выводит число $3$.
Чтобы программа также выводила $3$, число $k$ должно быть не меньше середины между $2^3$ и $3^3$.
$$3^3-k\leq k-2^3\quad\Longrightarrow\quad k\geq\frac{27+8}{2}=17{,}5$$Одновременно $k$ должно быть не больше середины между $3^3$ и $4^3$, иначе программа выберет число $4$.
$$k-3^3<4^3-k\quad\Longrightarrow\quad k<\frac{27+64}{2}=45{,}5$$Следовательно, целые значения $k$ лежат в диапазоне от $18$ до $45$ включительно.
$$45-18+1=28$$Где здесь ошибаются
Не включают одно из граничных значений диапазона.
Считают только значения между кубами $2^3$ и $3^3$, не учитывая условие сравнения расстояний.
Забывают, что при равенстве расстояний программа выбирает большее значение.