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