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

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

 

Бей­сикPython

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

A = −20: B = 20

M = 0 : R = F(A)

FOR T = A TO B

    IF F(T) < R THEN

        M = 0

        R = F(T)

    END IF

    IF F(T) = R THEN

        M = M + 1

    END IF

NEXT T

PRINT M+R

 

FUNCTION F(x)

F=abs(abs(x+3)+abs(x–7)–8)+2

END FUNCTION

def F(x):

    return(abs(abs(x+3)+abs(x–7)–8)+2)

 

a = −20

b = 20

M = 0

R = F(a)

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

    if F(t) < R:

        M = 0

        R = F(t)

    if F(t) == R:

        M += 1

print(M+R)

 

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

var

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

 

function F(x: integer): integer;

begin

f:=abs(abs(x+3)+abs(x–7)–8)+2;

end;

 

begin

    a := −20; b := 20;

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

    for t := a to b do begin

        if F(t) < R then begin

            M := 0;

            R := F(t);

        end;

        if F(t) = R then begin

            M := M + 1;

        end;

    end;

    write(M+R);

end.

 

алг

нач

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

    a := −20; b := 20

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

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

        если F(t) < R

            то M := 0; R := F(t)

        все

        если F(t) = R

            то M := M + 1

        все

    кц

    вывод M + R

кон

 

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

нач

знач:=abs(abs(x+3)+abs(x–7)–8)+2

кон

 

С++

#include <iostream>

using namespace std;

long f(int x) {

return (abs(abs(x+3)+abs(x–7)–8)+2);

}

 

int main()

{

    int a, b, t, M, R;

    a = −20; b = 20;

    M = 0; R = F(a);

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

        if (F(t) < R) {

            M = 0; R = F(t);

        }

        if (F(t) == R) {

            M = M + 1;

        }

    }

    cout << M + R;

    return 0;

}

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

Ре­ше­ние.

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

2.  За­ме­тим, что гра­фик функ­ции F = abs левая круг­лая скоб­ка abs левая круг­лая скоб­ка x плюс 3 пра­вая круг­лая скоб­ка плюс abs левая круг­лая скоб­ка x–7 пра­вая круг­лая скоб­ка –8 пра­вая круг­лая скоб­ка плюс 2 сим­мет­ри­чен от­но­си­тель­но оси Oy. Пер­вая точка, в ко­то­рой гра­фик при­ни­ма­ет наи­мень­шее зна­че­ние  — (−3; 4). После этой точки гра­фик пред­став­ля­ет собой пря­мую до точки (7, 4), а, зна­чит, к пе­ре­ме­ной M 11 раз при­ба­вит­ся еди­ни­ца. Таким об­ра­зом, ал­го­ритм вы­ве­дет на экран число 11 + 4 = 15.

 

Ответ: 15.