Сума чисел на проміжку#2860

Сума чисел на проміжку (Розбір)

Якщо обчислювати суму за допомогою циклу, то в найгіршому випадку (при a = -2 \cdot 10^9 та b = 2 \cdot 10^9) знадобиться виконати до 4 \cdot 10^9 ітерацій, що призведе до перевищення ліміту часу. Тому скористаємося формулою суми арифметичної прогресії. Перший член дорівнює , останній , а кількість членів дорівнює b - a + 1. Тоді шукана сума обчислюється за формулою:

\frac{a+b}{2} (b - a + 1)

Також слід зазначити, що отримане значення може не поміщатися в тип int, тому при обчисленнях необхідно використовувати тип long long.

Реалізація алгоритму

Читаємо вхідні дані.

scanf("%lld %lld",&a,&b);

Обчислюємо та виводимо відповідь.

res = (a + b) * (b - a + 1) / 2;
printf("%lld\n",res);

Java реалізація

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    long a = con.nextLong();
    long b = con.nextLong();
    long res = (a + b) * (b - a + 1) / 2;
    System.out.println(res);
  }
}

Python реалізація

Читаємо вхідні дані.

a, b = map(int,input().split())

Обчислюємо та виводимо відповідь.

res = (a + b) * (b - a + 1) // 2
print(res)