Аналіз алгоритму
Якщо рахувати суму за допомогою циклу, то у гіршому випадку (при , ) слід здійснити до ітерацій, а це призведе до 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)