Bitcoin

Publicat de: popa.bogdannnn
Memorie: 64.0MB/64.0MB
Timp de execuție: 1.0s
Operații IO: bitcoin.in/bitcoin.out

RANDy este pasionat de Machine Learning și de investițiile în criptomonede. După câteva luni întregi de cercetare, el este pe cale să descopere un algoritm de Machine Learning care poate prezice prețul unui Bitcoin, însă are nevoie de o ultimă parte foarte importantă și foarte specifică pentru a putea termina algoritmul.
Pentru orice două numere naturale nenule $A$ și $B$, cu $A \leq B$, RANDy trebuie să poată calcula următoarea sumă:

\begin{equation}
sumDiv(A) + sumDiv(A + 1) + … + sumDiv(B)
\end{equation}

unde $sumDiv(N)$ reprezintă suma divizorilor lui $N$.

Cerință

Ajutați-l pe RANDy să poată prezice prețul Bitcoin și implementați un program care calculează suma de mai sus.

Date de intrare

Citirea se va face din fișierul bitcoin.in. Prima linie conține numărul de teste $T$. Următoarele $T$ linii conțin câte două numere separate prin spațiu, $A$ și $B$.

Date de ieșire

Afișarea se va face în fișierul bitcoin.out. Se vor afișa $T$ numere, fiecare pe o linie nouă, pe linia $i$ regăsindu-se suma obținută pentru testul $i$.

Restricții și precizări

  • Subtask $1$ ($13$p): $1 \leq T, B \leq 500$
  • Subtask $2$ ($33$p): $1 \leq T, B \leq 10^5$
  • Subtask $3$ ($21$p): $1 \leq T, B \leq 10^6$
  • Subtask $4$ ($33$p): $1 \leq T \leq 100, B \leq 10^9$

Exemple

bitcoin.in

3
4 6
1 5
2 7

bitcoin.out

25
21
40

Explicație

  • $sumDiv(1) = 1$
  • $sumDiv(2) = 1 + 2 = 3$
  • $sumDiv(3) = 1 + 3 = 4$
  • $sumDiv(4) = 1 + 2 + 4 = 7$
  • $sumDiv(5) = 1 + 5 = 6$
  • $sumDiv(6) = 1 + 2 + 3 + 6 = 12$
  • $sumDiv(7) = 1 + 7 = 8$