Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 150. Укажите наименьшее такое (т. е. большее 150) число x, при вводе которого алгоритм печатает 30.
Бейсик | Python
DIM X, L, M AS INTEGER
INPUT X
L = 2*X-30
M = 2*X+30
WHILE L <> M
IF L > M THEN
L = L - M
ELSE
M = M - L
END IF
WEND
PRINT M
|
x = int(input())
L = 2*x-30
M = 2*x+30
while L != M:
if L > M:
L = L - M
else:
M = M - L
print(M)
Паскаль | Алгоритмический язык
var x, L, M: integer;
begin
readln(x);
L := 2*x-30;
M := 2*x+30;
while L <> M do begin
if L > M then
L := L - M
else
M := M - L;
end;
writeln(M);
end.
|
алг
нач
цел x, L, M
ввод x
L := 2*x-30
M := 2*x+30
нц пока L <> M
если L > M
то
L := L - M
иначе
M := M - L
все
кц
вывод M
кон
Си++
#include <iostream>
using namespace std;
int main()
{
int x, L, M;
cin >> x;
L = 2*x-30;
M = 2*x+30;
while (L != M) {
if (L > M)
L = L - M;
else
M = M - L;
}
cout « M « endl;
return 0;
}
Бейсик | Python
DIM X, L, M AS INTEGER
INPUT X
L = 2*X-30
M = 2*X+30
WHILE L <> M
IF L > M THEN
L = L - M
ELSE
M = M - L
END IF
WEND
PRINT M
|
x = int(input())
L = 2*x-30
M = 2*x+30
while L != M:
if L > M:
L = L - M
else:
M = M - L
print(M)
Паскаль | Алгоритмический язык
var x, L, M: integer;
begin
readln(x);
L := 2*x-30;
M := 2*x+30;
while L <> M do begin
if L > M then
L := L - M
else
M := M - L;
end;
writeln(M);
end.
|
алг
нач
цел x, L, M
ввод x
L := 2*x-30
M := 2*x+30
нц пока L <> M
если L > M
то
L := L - M
иначе
M := M - L
все
кц
вывод M
кон
Си++
#include <iostream>
using namespace std;
int main()
{
int x, L, M;
cin >> x;
L = 2*x-30;
M = 2*x+30;
while (L != M) {
if (L > M)
L = L - M;
else
M = M - L;
}
cout « M « endl;
return 0;
}
💡 Пошаговый разбор и решение:
Пока L !=M, вычитаем из большего меньшее. Первое действие 2*x + 30 − (2*x − 30), и тогда M станет = 60. Далее (т. к. 2*x − 30 > 60 по условию) L станет = 2*x − 90. Далее имеем 2*x − 150, 2*x − 210, 2*x − 270. Теперь L возможно станет меньше M. Поскольку M должно быть 30, значит, 2*x − 270 = 30, тогда x = 150, что не подходит по условию. Значит, 2*x − 330 = 30, т. е. x = 180.
Ответ: 180.
Приведём другое решение на языке Python.
for i in range(151, 1000):
x = i
L = 2 * x - 30
M = 2 * x + 30
while L != M:
if L > M:
L = L - M
else:
M = M - L
if M == 30:
print(i)
break
Ответ: 180.
Приведём другое решение на языке Python.
for i in range(151, 1000):
x = i
L = 2 * x - 30
M = 2 * x + 30
while L != M:
if L > M:
L = L - M
else:
M = M - L
if M == 30:
print(i)
break
Правильный ответ:
180
📚 Похожие разобранные задания по предмету:
ID 31641 • Задание №12
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, ...
ID 34157 • Задание №24
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости ...
🔗 Другие задания линии №22 по предмету Информатика:
ID 33548
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполнят...
ID 33549
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполнят...
ID 33550
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполнят...
ID 33551
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполнят...
ID 33552
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполнят...