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

Ниже за­пи­сан ал­го­ритм. После вы­пол­не­ния ал­го­рит­ма было на­пе­ча­та­но 3 числа. Пер­вые два на­пе­ча­тан­ных числа - это числа 7 и 42. Какое наи­боль­шее число может быть на­пе­ча­та­но тре­тьим?

 

 

Бей­сикPython

DIM X, Y, Z, R, A, B AS INTEGER

INPUT X, Y

IF Y > X THEN

    Z = X: X = Y: Y = Z

END IF

A = X: B = Y

WHILE B > 0

    R = A MOD B

    A = B

    B = R

WEND

PRINT A

PRINT X

PRINT Y

x = int(input())

y = int(input())

if y > x:

    z = x

    x = y

    y = z

a = x

b = y

while b > 0:

    r = a % b

    a = b

    b = r

print(a)

print(x)

print(y)

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

var x, y, z: integer;

var r, a, b: integer;

begin

    readln(x, y);

    if y >x then begin

        z := x; x := y; y := z;

    end;

    a:= x; b:= y;

    while b>0 do begin

        r := a mod b;

        a := b;

        b := r;

    end;

    writeln(a);

    writeln(x);

    write(y);

end.

алг

нач

    цел x, y, z, r, a, b

    ввод x, y

    если y > x

        то

            z := x; x := y; y := z

    все

    a := x; b := y

    нц пока b>0

        r := mod (a, b)

         a := b

         b := r

    кц

    вывод a, нс, x, нс, y

кон

 

Си++

 

#include <iostream>

using namespace std;

int main()

{

    int x, y, z, r, a, b;

    cin >> x >> y;

    if (y > x){

        z = x; x = y; y = z;

    }

    a = x; b = y;

    while (b>0){

        r = a%b;

        a = b;

b = r;

}

cout « a « endl « x « endl « y « endl;

}

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

Ре­ше­ние.

Сна­ча­ла вво­дят­ся два числа и пе­ре­став­ля­ют­ся так, чтобы в пе­ре­мен­ной x было наи­боль­шее число, а в пе­ре­мен­ной y – наи­мень­шее из двух:

 

"if у >x then begin

z:= x;x:= y;y:= z;"

 

"a:= x; b:= у;

while b>0 do begin

r := a mod b;

a := b;

b := r; "

Ал­го­ритм по­ис­ка наи­боль­ше­го об­ще­го де­ли­те­ля, ко­то­рый в итоге ока­зы­ва­ет­ся в пе­ре­мен­ной а.

 

На экран вы­во­дит­ся: сна­ча­ла зна­че­ние пе­ре­мен­ной a (наи­боль­ший общий де­ли­тель ис­ход­ных чисел), затем зна­че­ние x (боль­шее из ис­ход­ных чисел) и зна­че­ние y (мень­шее из ис­ход­ных чисел).

 

По усло­вию пер­вое число  — 7, вто­рое  — 42. Сле­до­ва­тель­но, ис­ко­мое число долж­но де­лить­ся на 7 и быть мень­ше 42. Наи­боль­шее из таких чисел  — 35.

 

Ответ: 35.

 

При­ведём дру­гое ре­ше­ние на языке Python.

for i in range(1, 1000):

x = i

for j in range(1, 1000):

y = j

if y > x:

z = x

x = y

y = z

a = x

b = y

while b > 0:

r = a % b

a = b

b = r

if a == 7 and x == 42:

print(j) # Из вы­ве­ден­ных зна­че­ний вы­бе­рем наи­боль­шее


Аналоги к заданию № 5059: 5091 Все

Раздел кодификатора ФИПИ: