Лёша‑путешественник
Ограничение по времени: 1
секунда
Ограничение по памяти: 256
мегабайт
Алексей очень спешил в поездку и, забежав в поезд, не успел посмотреть номер вагона, зато успел посчитать, что перед ним находится не менее A
вагонов, а за ним —
не более B
вагонов. Всего в составе N
вагонов. Выведите количество вариантов номера вагона, в котором может оказаться Алексей.
Формат входных данных
В первых трёх строках вводится 3
целых числа N
, A
, B
(1≤N≤109,0<A,B<N
).
решить на паскале
count = 0
for i in range(A, B+1):
count += 1
Второй способ — воспользоваться формулой для суммы арифметической прогрессии. Сумма чисел от 1 до N равна `N*(N+1)/2`. Таким образом, сумма чисел от 1 до B равна `B*(B+1)/2`, а сумма чисел от 1 до A-1 равна `(A-1)*A/2`. Разность этих сумм даст количество чисел от A до B:
count = B*(B+1)/2 - (A-1)*A/2
Третий способ — воспользоваться свойством арифметической прогрессии: сумма чисел от A до B равна `(A+B)*(B-A+1)/2`, а их количество равно `B-A+1`. Таким образом, можно записать:
count = (B-A+1)*((A+B)/2)
Все три способа дают одинаковый результат. Выбор конкретного способа зависит от предпочтений программиста и особенностей языка программирования, на котором решается задача.
Обратите внимание, что в условии задачи указано, что N может быть очень большим числом, до 10^9. Поэтому имеет смысл использовать второй или третий способ, так как цикл в первом способе может быть слишком долгим. Кроме того, в третьем способе используется деление на 2, что может привести к потере точности при работе с большими числами. В таком случае, рекомендуется использовать второй способ.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет