Напишите в ответе число, равное количеству различных значений входной переменной k, при которых приведённая ниже программа выводит тот же ответ, что и при входном значении k = 10. Значение k = 10 также включается в подсчёт различных значений k. Для Вашего удобства программа приведена на пяти языках программирования.
| Бейсик | Python |
|---|---|
DIM K, I AS LONG INPUT K I = 1 WHILE F(I) < K I = I + 1 WEND IF F(I)-K <= K-F(I-1) THEN PRINT I ELSE PRINT I-1 END IF
FUNCTION F(N) F = N * N * N END FUNCTION
| def f(n): return n*n*n i = 1 k = int(input()) while f(i) < k: i+=1 if (f(i)-k <= k-f(i-1)): print (i) else: print (i - 1)
|
| Паскаль | Алгоритмический язык |
var k, i : longint;
function f(n: longint) : longint; begin f := n * n * n; end; begin readln(k); i := 1; while f(i) < k do i := i+1; if f(i)-k <= k-f(i-1) then writeln(i) else writeln(i-1); end.
| алг нач цел i, k ввод k i := 1 нц пока f(i) < k i := i + 1 кц если f(i)-k <= k-f(i-1) то вывод i иначе вывод i-1 все кон алг цел f(цел n) нач знач := n * n * n кон |
| Си++ | |
#include <iostream> using namespace std; long f(long n) { return n * n * n; }
int main() { long k, i; cin >> k; i = 1; while (f(i) < k) i++; if (f(i)-k <= k-f(i-1)){ cout << i << endl; } else { cout << i-1 << endl; } }
| |
Для данного k нужно найти минимальное i такое, что После чего если
то вывести i, иначе
При k = 10 имеем i = 3. Также i = 3 при всех
В этом интервале k в правой части неравенства всегда будет
То есть неравенство будет выполняться при Нам же не нужно, чтобы оно выполнялось, так как при k = 10 оно не выполняется.
Итого при не выполняется
и вывод всегда один и тот же — 2.
Большие i не рассматриваем, потому что нас интересует вывод 2, а при i > 3 этого не может быть.
Рассмотрим же i = 2. Для этого значения
В правой части неравенства же стоит
Нужно, чтобы новое неравенство выполнялось. Значит,
Итого для i = 2 подходят
При меньших i вывод 2 также невозможен.
Итого имеем — всего 13 значений.

