Вариант № EGE_INF_1702
Добавлен 25 мая 2017 г. в 0:12. Изменён 9 июня 2018 г. в 20:09.Скачать PDFЗадание
Укажите количество значений входной переменной k
, при которых программа напечатает тот же ответ, что и при k = 12
.
-
Копировать
function f(n : integer) : integer; begin if n > 0 then f := 2 * f(n - 1) else f := 1 end; var k, i : integer; begin readln(k); i := 1; while f(i) < k * k do begin i := i + 1; k := k + 1 end; writeln(i) end.
-
Копировать
#include <stdio.h> int f(int n) { if (n > 0) return 2 * f(n - 1); else return 1; } void main() { int k, i = 1; scanf("%d", &k); while (f(i) < k * k) { i++; k++; } printf("%d", i); }
-
Копировать
DIM K, I AS INTEGER INPUT K I = 1 WHILE F(I) < K * K I = I + 1 K = K + 1 WEND PRINT I FUNCTION F(N) IF N > 0 THEN F = 2 * F(N - 1) ELSE F = 1 END IF END FUNCTION
-
Копировать
def f(n) : if n > 0 : return 2 * f(n - 1) else : return 1 k = int(input()) i = 1 while f(i) < k * k : i += 1 k += 1 print(i)
Решение
Не сложно понять, что рекурсивная функция f(n)
возводит число 2
в неотрицательную целую степень n
, то есть \(f(n) = 2^n\).
После трассировки при k=12
определим, что программой выводится значение i=9
.
Далее, из условия окончания цикла, получим:
\[\left\{ \begin{array}{c}
f(8)<(k+7)^{2},\\
f(9)\geq(k+8)^{2},\\
k\in\mathbb{Z}
\end{array}\right.\Leftrightarrow\left\{ \begin{array}{c}
256<(k+7)^{2},\\
512\geq(k+8)^{2},\\
k\in\mathbb{Z}
\end{array}\right.\]
Решение системы в целых числах даёт значения k=-30,...,-24
и k=10,...,14
, то есть всего 12 различных значений k
.
Ответ
12
Подробнее...