Анализ алгоритма
Если считать сумму при помощи цикла, то в худшем случае (при , ) следует совершить до итераций, а это приведет к Time Limit. Воспользуемся формулой суммы арифметической прогрессии. Первый член равен , последний , а всего членов . Тогда искомая сумма равна
Следует также отметить, что полученная сумма может не помещаться в тип 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)