DivPlusMinus

Time limit: 1s Memory limit: 512MB Input: Output:

Lui M29 îi plac jocurile cu subsecvențe. Pentru o secvență dată, M29 îi calculează frumusețea.

Fie subsecvența C=(c1,c2,…,ck)C = (c_1, c_2, \dots, c_k). Notăm frumusețea cu BB.

Calculăm frumusețea adunând elementele care au în secvență un divizor (diferit de propria poziție) și scăzându-le pe cele care nu au:

B=S+−S−B = S_{+} - S_{-}

Unde sumele sunt definite după indici (ii și jj):

S+=∑1≤i≤kexista˘ j≠i a.ıˆ. cj∣ciciS_{+} = \sum_{\substack{1 \le i \le k \\ \text{există } j \neq i \text{ a.î. } c_j | c_i}} c_iS−=∑1≤i≤knu exista˘ j≠i a.ıˆ. cj∣ciciS_{-} = \sum_{\substack{1 \le i \le k \\ \text{nu există } j \neq i \text{ a.î. } c_j | c_i}} c_i

M29 și-a dat seama că nu poate calcula răspunsul pentru atât de multe subsecvențe, astfel că vă pune pe voi să o faceți.

Cerință

Se dă un șir AA cu NN elemente indexate de la 11.
De asemenea, se dau QQ întrebări. Pentru fiecare întrebare, primiți două numere ll și rr și trebuie să calculați frumusețea subsecvenței (A[l],…,A[r])(A[l], \dots, A[r]).

Date de intrare

Se citesc de la tastatură:

  • Pe prima linie numerele NN și QQ.
  • Pe următoarea linie NN numere, elementele șirului AA.
  • Pe următoarele QQ linii, două valori ll și rr.

Date de ieșire

Se vor afișa QQ linii. Pe linia ii se va afișa răspunsul pentru întrebarea ii.

Restricții și precizări

  • 1≤Q≤200 0001 \le Q \le 200\,000
  • 1≤N≤100 0001 \le N \le 100\,000
  • 1≤l≤r≤N1 \le l \le r \le N
  • 1≤Ai≤1 000 0001 \le A_i \le 1\,000\,000
# Punctaj Restricții
1 12 1≤N,Q≤1001 \leq N, Q \leq 100
2 10 1≤N≤100,1≤Q≤100 0001 \leq N \leq 100, 1 \leq Q \leq 100 \ 000
3 21 1≤N≤1 000,1≤Q≤200 0001 \leq N \leq 1 \ 000, 1 \leq Q \leq 200 \ 000
4 19 1≤N⋅Q≤1 000 0001 \leq N \cdot Q \leq 1 \ 000 \ 000
5 15 1≤N,Q≤50 0001 \leq N, Q \leq 50 \ 000
6 23 Fără alte restricții

Exemplu

stdin

7 6
1 2 3 4 10 12 12
1 3
2 2
5 6
1 7
2 5
6 7

stdout

4
-2
-22
42
9
24

Explicație

  1. Pentru primul query (subsecvența 1, 2, 3): Se adună 2 și 3 (pentru că ambele îl au pe 1 ca divizor) și se scade 1. Răspunsul este 2+3−1=42 + 3 - 1 = 4.
  2. Pentru al cincilea query: Se scad 2 și 3 și se adaugă 4 și 10 (îl au ca divizor pe 2).
  3. Pentru al șaselea query: Se adaugă 12 și 12 (A[6]A[6] îl are ca divizor pe A[7]A[7], iar A[7]A[7] îl are ca divizor pe A[6]A[6]).

Log in or sign up to be able to send submissions!