Əgər cəmi dövr vasitəsilə hesablasaq, ən pis halda (yəni a = -2 \cdot 10^9 və b = 2 \cdot 10^9 olduqda) 4 \cdot 10^9-a qədər təkrar yerinə yetirmək tələb olunacaq ki, bu da vaxt limitinin aşılmasına səbəb olacaq. Buna görə də hesab silsiləsinin cəm düsturundan istifadə edəcəyik. Birinci hədd -ya, sonuncu hədd -yə bərabərdir, hədlərin sayı isə b - a + 1-dir. Onda axtarılan cəm aşağıdakı düsturla hesablanır:
Həmçinin qeyd etmək lazımdır ki, alınan qiymət int tipinə sığmaya bilər, buna görə də hesablamalar zamanı long long tipindən istifadə etmək lazımdır.
Alqoritmin realizasiyası
Giriş məlumatlarını oxuyuruq.
scanf("%lld %lld",&a,&b);Cavabı hesablayıb çap edirik.
res = (a + b) * (b - a + 1) / 2;
printf("%lld\n",res);Java realizasiyası
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 realizasiyası
Giriş məlumatlarını oxuyuruq.
a, b = map(int,input().split())Cavabı hesablayıb çap edirik.
res = (a + b) * (b - a + 1) // 2
print(res)