Вопрос задан 01.11.2026 в 09:00. Предмет Информатика. Спрашивает Трефелова Маргарита.

Переведите это решение на паскаль.
N = int(input())
A = int(input())
B = int(input())
C = int(input())
def time(x, y):
return max(x * C + (N-x) * A, x * C + (x-y-1) * B, y * A)
ans = N * A
X = (N * A * A + N * A * B) // (2 * A * B + A * A - C * B)
for x in (X, X + 1):
y = (C + B) * x // (A + B)
ans = min(ans, time(x, y))
print(ans)

Перейти к ответам

Ответы на вопрос

Отвечает Балыкина Марина.

Вот перевод вашего решения с Python на Pascal (Free Pascal):

pascal
program Solution; var N, A, B, C: Int64; X0, x, y, ans, t: Int64; i: Integer; function CalcTime(x, y: Int64): Int64; var t1, t2, t3: Int64; begin t1 := x * C + (N - x) * A; t2 := x * C + (x - y - 1) * B; t3 := y * A; CalcTime := t1; if t2 > CalcTime then CalcTime := t2; if t3 > CalcTime then CalcTime := t3; end; begin ReadLn(N); ReadLn(A); ReadLn(B); ReadLn(C); ans := N * A; X0 := (N * A * A + N * A * B) div (2 * A * B + A * A - C * B); for i := 0 to 1 do begin x := X0 + i; y := ((C + B) * x) div (A + B); t := CalcTime(x, y); if t < ans then ans := t; end; WriteLn(ans); end.

Объяснение перевода

1. Ввод данных

В Python:

Python
N = int(input())
A = int(input())
B = int(input())
C = int(input())

В Pascal:

pascal
ReadLn(N); ReadLn(A); ReadLn(B); ReadLn(C);

2. Функция time(x, y)

В Python используется функция max(), которая возвращает наибольшее из трёх значений.

В Pascal мы вычисляем три значения t1, t2, t3, а затем с помощью условий if находим максимальное.

3. Целочисленное деление

В Python:

Python
X = (N * A * A + N * A * B) // (2 * A * B + A * A - C * B)

В Pascal:

pascal
X0 := (N * A * A + N * A * B) div (2 * A * B + A * A - C * B);

Оператор div выполняет целочисленное деление. При неотрицательном результате деления он работает аналогично // в Python. При отрицательном результате возможны различия, поскольку Python округляет вниз, а Pascal — к нулю.

4. Перебор двух значений

В Python:

Python
for x in (X, X + 1):

В Pascal:

pascal
for i := 0 to 1 do begin x := X0 + i;

Здесь важно, что Pascal не различает строчные и прописные буквы в именах переменных. Поэтому нельзя одновременно объявить X и x как две разные переменные. Мы переименовали исходную переменную X в X0.

5. Поиск минимального ответа

В Python:

Python
ans = min(ans, time(x, y))

В Pascal:

pascal
t := CalcTime(x, y); if t < ans then ans := t;

Важное замечание

Для переменных используется тип Int64, а не Integer, поскольку в

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос