Определить количество чисел, для которых программа выведет такой же результат, что и для заданного числа - Pascal
Формулировка задачи:
[ЕГЭ] 21 задание
По какому алгоритму решать подобные задания? Неужели сидеть и все пересчитывать.
Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и для K =
17?
var i, k: integer; function F(n:integer):integer; begin F:=n*n*n+5*n*n; end; begin readln(k); i := 1; while f(i) < K do i:=i+1; if f(i)-k<=k-2*f(i-1) then writeln(i) else writeln(i-1); end.
Решение задачи: «Определить количество чисел, для которых программа выведет такой же результат, что и для заданного числа»
textual
Листинг программы
program test; var i, k: integer; function F(n: integer): integer; begin F := n * n * n + 5 * n * n; end; begin for k := 1 to 28 do begin Write(K: 2, ' '); i := 1; while f(i) < K do i := i + 1; Write(i, ' '); if f(i) - k <= k - 2 * f(i - 1) then writeln(i) else writeln(i - 1); end; end.
Объяснение кода листинга программы
- Объявляется программа с названием
test
. - Объявляются переменные
i
иk
целочисленного типа. - Объявляется функция
F
с входным параметромn
целого типа, которая возвращает целое число. - Внутри функции
F
происходит вычисление значения по формуле:n * n * n + 5 * n * n
. - Начинается выполнение основной программы.
- Происходит цикл
for
от 1 до 28. - Для каждого значения
k
выполняется следующее:- Выводится значение
k
. - Присваивается значение
i
равное 1. - Выполняется цикл
while
пока значение функцииF(i)
меньше чемk
: ---i
увеличивается на 1. - Выводится значение
i
. - Если разница между значением функции для текущего
i
иk
меньше или равна разнице междуk
и удвоенной функции от (i-1), то выводится значениеi
, иначе выводится значение(i-1)
. Код рассчитан на вычисление и вывод количества чисел, для которых программа выведет такой же результат, что и для заданного числаk
.
- Выводится значение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д