Тема 6. Алгоритмы – определение результата
6.02 Анализ простейших программ (старое)
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – определение результата
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#5841

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

|------------------------------|--------------------------------|
|P-ython-----------------------|C--+-+--------------------------|
|def f(x) :                    |#include  <  iostream  >         |
|   return17  ∗ (x − 4 ) ∗ (x − 7)|usingnamespacestd;              |
|                              |                                |
|a = − 20                      |intf (intx ){                    |
|b = 20                        |   return17 ∗ (x − 4) ∗ (x − 7);|
|M  =  a                       |}                               |
|R  = f(a)                     |intmain  (){                     |
|f oriinrange (a,b + 1) :       |   inta, b,M, R;                 |
|                              |                                |
|   if f(i) < R :               |   a = − 20;b = 20;             |
|     M  = i                   |   M  = a;R  = f(a);            |
|     R = f (i)                 |   for(inti = a;i <= b;i + + )  |
|print(M  )                    |     if(f(i) < R ){              |
|                              |       M  =  i;                  |
|                              |                                |
|                              |       R  = f(i);               |
|                              |     }                          |
|                              |   cout < < M ;                 |
|                              |   return0;                     |
|                              |                                |
--------------------------------}-------------------------------|
Показать ответ и решение

Решение аналитически

Рассмотрим функцию f(x) = 17 ⋅ (x − 4) ⋅ (x − 7) :

Знаем, что при раскрытии скобок мы получим положительный коэффициент перед x2 :  действительно, при перемножении скобок  2
x   возникнет только при умножении x  на x,  который далее домножится на 17. Тогда, так как коэффициент перед  2
x   положителен, график f (x)  — парабола ветвями вверх с нулями в x = 4  и x =  7.  Известно, что абсцисса вершины параболы — среднее арифметическое абсцисс корней, значит, — 5.5. Значение минимума (вершины): 17 ⋅ 1.5 ⋅ (− 1.5) = − 38.25.

Рассмотрим цикл. В переменной R  хранится какое-то значение функции, в цикле мы рассматриваем все значения функции y = f (x)  для x  ∈ [a;  b]  и находим минимальное (из условия f (i) < R,  т.е., если, перебирая значения функции, мы видим значение меньше найденного ранее, мы его сохраняем — таким образом, мы сохраняем все меньшее и меньшее значение или не меняем его — значит, ищем минимум), записывая его значение и x,  при котором это значение достигается, в переменные R  и M  соответственно. Обратим внимание, что, если минимальное значение будет достигнуто еще раз, условие в цикле не будет выполнено, т.к. знак неравенства строгий.

Таким образом, мы ищем минимальное значение функции и x, при котором это значение достигается в первый раз. Знаем, что парабола ветвями вверх достигает минимум в вершине, на всякий случай приведем график, который легко построить из рассуждений выше:

PIC

Заметим, что в программе рассматриваются только целые числа (обратите внимание на тип переменных), значит, x = 5.5  не подойдет. Тогда проверим два ближайших значения — f (5)  и  f(6).  f (5 ) = 17 ∗ 1 ∗ (− 2) = − 34, f (6) = 17 ∗ 2 ∗ (− 1) = − 34.  Так как мы ищем, когда минимальное значение достигнется первый раз, то в ответ записываем x = 5.  M  =  5,R = − 34.

Решение программой

def f(x):
    return 17 * (x - 4) * (x - 7)

a = -20
b = 20
M = a
R = f(a)
for i in range(a, b+1):
    if f(i) < R:
        M = i
        R = f(i)
print(M)

Ответ: 5

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное обучение
в Школково

Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!