21. Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования). Паскаль
21. Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма (для Вашего удобства алгоритм представлен на пяти языках программирования).
Паскаль
var a, b, N, t: integer;
Function F(x: integer):integer;
begin
F := (x - 16)*(x + 25)
end;
begin
a := -100; b := 100;
N := 0;
for t := a to b do begin
if (F(t) <= 0) then
N := N + 1
end;
write(N)
end.
Ответ: 42___________________________.
Решение
Рассмотрим наше задание на примере языка программирования Паскаль.
Function F(x: integer):integer – означает:
х – целое число,
результат функции F(t) – целое число.
Данная программа выводит на экран число N, его значение будет зависеть от
функции F(t).
Если результат функции F(t) ≤ 0, то N увеличивается на единицу.
Функция F вычисляется по формуле (x – 16)*(x + 25) или x2+9*x-400.
Пусть x2+9*x-400=0, тогда х1 = -25, х2 = 16
Графиком функции x2+9*x-400 является парабола, ветви которой направлены вверх.
Следовательно, при x∈[-25,16] функция ≤ 0
Цикл for запускается для переменной t от -100 до 100, значит, всего 16+1+25=42 раза будет выполняться условие F(t) ≤ 0.
Ответ: 42
Другая задача №17. вариант 2.
Напишите в ответе число, равное количеству различных значений входной переменной k, при которых приведённая ниже программа выводит тот же ответ, что и при входном значении k = 10. Значение k = 10 также включается в подсчёт различных значений k.
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.
Решение:
1) сначала заметим, что функция f возвращает куб переданного ей числа
2) после ввода k работает цикл, который увеличивает i до тех пор, пока значение куба f(i) не станет больше или равно k – тогда нарушится условие f(i)3) построим таблицу значений функции f(i) (кубов чисел):
таблицу
i |
f(i) |
Цикл завершается для … |
1 |
1 |
k=1 |
2 |
8 |
k=2,...,8 |
3 |
27 |
k=9,...,27 |
4) таким образом, при k=10 цикл завершится при i=3
5) главная «новинка» – в условном операторе
if f(i)-k <= k-f(i-1) then
writeln(i)
else writeln(i-1);
6) например, при k=10 и i=3 условие
f(i)-k <= k-f(i-1)
27-10 <= 10-8
17 <= 2
неверно, из-за этого выводится на экран не i, а i-1, то есть 2
7) итак, нам нужно найти, сколько значений k дадут на выходе 2
8) посмотрим внимательно на условие в условном операторе, преобразуем его к виду
f(i)+f(i-1) <= 2k
9) тогда при выполнении обратного условия,
2k < f(i)+f(i-1)
k < (f(i)+f(i-1))/2
выводится число i-1 вместо i
10) составим еще одну таблицу:
таблицу
у:
i |
(f(i)+f(i-1))/2 |
Выводится i-1 для … |
Выводится i для … |
2 |
4,5 |
k=2,...,4 |
k=5,...,8 |
3 |
17,5 |
k=9,...,17 |
k=18,...,27 |
11) таким образом, в этой задаче нам подходят числа в диапазоне [5;17], всего
их 17-5+1 = 13
12) Ответ: 13.
Другая задача №17. вариант 7.
Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и для K = 24:
var i, k: integer;
function F(x:integer):integer;
begin
if x = 1 then
F:=1
else F:=x*F(x-1);
end;
begin
i := 15;
readln(K);
while (i>0) and (F(i) > K) do
i:=i-1;
writeln(i);
end.
Другая задача №17. вариант 5.
Напишите в ответе наименьшее значение входной переменной k, при котором программа выдаёт тот же ответ, что и при входном значении k = 10.
var k, i : longint;
function f(n: longint): longint;
begin
f := n * n * n;
end;
function g(n: longint): longint;
begin
g := 2*n + 3;
end;
begin
readln(k);
i := 1;
while f(i) < g(k) do
i := i+1;
writeln(i)
end.
Решение:
1) сначала заметим, что функция f возвращает куб переданного ей числа, а функция g – результат вычисления 2*n+3
2) при некотором i работа цикла останавливается: это происходит при нарушении условия
f(i)<g(k), то есть при выполнении обратного условия f(i)³g(k)
3) в то же время на предыдущем шаге цикла (для i-1) условие его работы выполнялось, то есть
f(i-1)<g(k), откуда получаем
f(i-1)<g(k)£f(i)
4) вспоминая, что f(i)=i3, делаем вывод, что g(k) должно быть между кубами двух соседних чисел: (i-1)3 < g(k) £ i3
5) для заданного k=10 находим g(10)=2·10+3=23, так что i=3: (2)3 < g(k)=23 £ 33
6) осталось проверить, при каких k выполняется условие
8 < g(k)=2k+3 £ 27
7) решая двойное неравенство относительно k получаем 2,5 < k £ 12
8) таким образом, минимальное целое число, соответствующее условию – 3.
9) Ответ: 3.
Другая задача №17. вариант 3.
Напишите в ответе число различных значений входной переменной k, при которых программа выдаёт тот же ответ, что и при входном значении k = 64. Значение k = 64 также включается в подсчёт различных значений k.
var k, i : longint;
function f(n: longint) : longint;
begin
f := n * n
end;
begin
readln(k);
i := 12;
while (i>0) and (f(i)>=k) do
i := i-1;
writeln(i)
end.
Решение:
1) заметим, что функция F(x) вычисляет квадрат переданного ей числа
2) в теле основной программы выполняется цикл с условием, который заканчивается, когда значение функции станет меньше k
3) на каждом шаге цикла уменьшается значение переменной i, начиная с 12; цикл также заканчивается, когда значение переменной i станет равно 0
4) после окончания цикла программа выводит значение переменной i.
5) итак, функция выводит первое натуральное значение i, квадрат которого меньше, чем введённое с клавиатуры значение переменной k
6) при k = 64 программа выведет значение 7, поскольку это наибольшее натуральное число, квадрат которого меньше, чем 64
7) фактически нужно ответить на вопрос: сколько есть таких чисел k, которые меньше или равны 82 = 64 и больше, чем 72 = 49 (легко проверить, что при k=65 программа выведет значение 8, в при k=49 – значение 6)
8) в диапазоне [50;64] всего 64-50+1=15 чисел, это и есть правильный ответ.
9) ответ: 15.
№ | Наименование | Время | Стоимость | |
---|---|---|---|---|
1 |
Дистанционный репетитор по информатике по Skype |
1 час | от 600 руб. |
Со студентами провожу занятия по высшей математике, математическому анализу, теории вероятности и математической статистике, линейной алгебре. Индивидуальные занятия в Москве в офисе на м.Китай-город.
Подготовку к ЕГЭ школьников по математике, физике и информатике,
занятия со студентами по высшей математике, физике.
Демоверсия ЕГЭ 2017 по математике. Профильный уровень.
Демоверсия ЕГЭ 2017 по физике.
Демоверсия ЕГЭ 2017 по информатике
Вот основные темы по высшей математике: пределы, последовательности, производные, интегрирование, дифференцирование, линейная алгебра, аналитическая геометрия, теория вероятности.
Решение задач:
На главную страницу: запись на занятие с репетитором по математике, физике и информатике