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 по информатике

Вот основные темы по высшей математике: пределы, последовательности, производные, интегрирование, дифференцирование, линейная алгебра, аналитическая геометрия, теория вероятности.

Решение задач:

Пределы

Производные

Бесконечно малые величины

Интегралы

На главную страницу: запись на занятие с репетитором по математике, физике и информатике

Популярные репетиторы:

Рейтинг 5 из 5: 45 отзывов
 
Когда еще учился в аспирантуре, c самого истока своей карьеры, я грезил собрать воедино 2 моих основных пристрастий: Математику, Информатику и Обучение.

Компетентный математик для школьников и студентов, PhD, педагогический стаж более 15 лет, в мгновение ока   подготовит без посредников контрольной работе по математике на 2 курс с помощью современных ноу-хау по развитию памяти и ускорению мышления. 

Запросто "кодит" на Lisp, Elexir и C/C++. Некоторое время потрудился по развитию в стартапе по Data Science и Нейросетям. Консультации по математическим пакетам JupyterLab, SPSS и MathLab . Участвует в международных научных конференциях WSDM, NIPS и ACL .

Более 320 учащихся  поступили «на бюджет» в ВУЗы Москвы: ВШЭ, МАИ, Школа Анализа Данных Яндекса и МЭИ и многие другие. Занятия проводятся  в Москве м. Китай-город и дистанционно по Viber. Опыт учителя по высшей математике для аспирантов более 20 лет. Hij spreekt Nederlands.

Запись на занятия

Ваше сообщение отправлено