Se si calcola la somma tramite un ciclo, nel caso peggiore (per a = -2 \cdot 10^9 e b = 2 \cdot 10^9) sarà necessario eseguire fino a 4 \cdot 10^9 iterazioni, il che comporterà il superamento del limite di tempo. Pertanto, utilizziamo la formula della somma di una progressione aritmetica. Il primo termine è uguale ad , l'ultimo a , e il numero di termini è uguale a b - a + 1. Allora la somma cercata si calcola secondo la formula:
Va inoltre osservato che il valore ottenuto potrebbe non entrare nel tipo int, pertanto nei calcoli è necessario utilizzare il tipo long long.
Implementazione dell'algoritmo
Leggiamo i dati in ingresso.
scanf("%lld %lld",&a,&b);Calcoliamo e stampiamo la risposta.
res = (a + b) * (b - a + 1) / 2;
printf("%lld\n",res);Implementazione in 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);
}
}Implementazione in Python
Leggiamo i dati in ingresso.
a, b = map(int,input().split())Calcoliamo e stampiamo la risposta.
res = (a + b) * (b - a + 1) // 2
print(res)