Задания
Версия для печати и копирования в MS Word
Тип Д21 № 27390
i

Какое число будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­щей про­грам­мы? Для Ва­ше­го удоб­ства про­грам­ма при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

 

Бей­сикPython

DIM A, B, T, M, R AS INTEGER

A = -10: B = 10

M = 1: R = F(A)

FOR T = A TO B

    IF F(T) >= R THEN

    M = M + 1

    R = F(T)

    END IF

NEXT T

PRINT R + M

FUNCTION F(x)

    F = (x+1)*(x+1) - 4

END FUNCTION

def F(x):

    return (x+1)*(x+1) - 4

a=-10; b=10

M = 1; R = F(a)

for t in range(a,b+1):

    if F(t) >= R:

        M = M + 1; R = F(t)

print(R + M)

 

Пас­кальАл­го­рит­ми­че­ский язык

var a, b, t, M, R :integer;

function F(x:integer):integer;

    begin

    F := (x+1)*(x+1) - 4

    end;

begin

    a := -10; b := 10;

    M := 1; R := F(a);

    for t := a to b do begin

        if F(t) >= R then begin

            M := M + 1;

            R := F(t)

        end

    end;

    write(R + M)

end.

 

алг

нач

    цел a, b, t, M, R

    a := -10; b := 10

    M := 1; R := F(a)

    нц для t от a до b

        если F(t) >= R

            то M := M + 1; R := F(t)

        все

    кц

    вывод R+M

кон

алг цел F(цел x)

нач

    знач := (x+1)*(x+1) - 4

кон

 

С++

#include <iostream>

using namespace std;

int F(int x)

{

    return (x+1)*(x+1) - 4;

}

int main()

{

    int a, b, t, M, R;

    a = -10; b = 10;

    M = 1; R = F(a);

    for (t=a; t<=b; ++t) {

        if (F(t) >= R) {

            M = M+1; R = F(t);

        }

    }

    cout << R+M;

    return 0;

}

Спрятать решение

Ре­ше­ние.

1.  Ал­го­ритм пред­на­зна­чен для по­ис­ка наи­боль­ше­го зна­че­ния функ­ции F(t) на от­рез­ке от a до b, при этом каж­дый раз, когда на­хо­дит­ся новое наи­боль­шее зна­че­ние, к пе­ре­мен­ной M при­бав­ля­ет­ся еди­ни­ца. Затем сумма наи­боль­ше­го зна­че­ния и пе­ре­мен­ной M вы­во­дит­ся на экран.

2.  F левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка = левая круг­лая скоб­ка x плюс 1 пра­вая круг­лая скоб­ка умно­жить на левая круг­лая скоб­ка x плюс 1 пра­вая круг­лая скоб­ка минус 4=x в квад­ра­те плюс 2x минус 3. гра­фик этой функ­ции  — па­ра­бо­ла, ветви ко­то­рой на­прав­ле­ны вверх, по­это­му функ­ция при­ни­ма­ет наи­боль­шее зна­че­ние на одном из кон­цов.

3.  Вы­чис­лим зна­че­ния функ­ции для кон­цов:

F левая круг­лая скоб­ка a пра­вая круг­лая скоб­ка = левая круг­лая скоб­ка 1 минус 10 пра­вая круг­лая скоб­ка в квад­ра­те минус 4=27 минус 4 = 77,

F левая круг­лая скоб­ка b пра­вая круг­лая скоб­ка = левая круг­лая скоб­ка 1 плюс 10 пра­вая круг­лая скоб­ка в квад­ра­те минус 4=121 минус 4 = 117.

4.  Далее, найдём  x в квад­ра­те плюс 2x минус 3=77 рав­но­силь­но x_1= минус 10, x_2=8. Зна­чит, усло­вие F(t) >= R будет со­блю­дать­ся в точ­ках −10, 8, 9 и 10. Таким об­ра­зом, пе­ре­мен­ная M будет равна 5.

Зна­чит, ответ  — 117 + 5 = 122.

 

Ответ: 122.