prosum

Time limit: 0.5s Memory limit: 64MB Input: prosum.in Output: prosum.out

Se dau NN numere naturale a1a_1, a2a_2, \dots, aNa_N şi un număr natural nenul MM.

Cerința

Să se determine numărul perechilor de indici (i,j)(i, j), cu i<ji < j, cu proprietatea că numărul aiaj+ai+aja_i \cdot a_j + a_i + a_j este divizibil cu MM.

Date de intrare

Fișierul de intrare prosum.in conține pe prima linie numerele naturale NN și MM, iar pe următoarea linie cele NN numere naturale a1,a2,aNa_1, a_2, \dots a_N, separate prin spațiu.

Date de ieșire

Fișierul de ieșire prosum.out va conține pe prima linie numărul perechilor de indici (i,j)(i, j), cu i<ji < j, cu proprietatea că numărul aiaj+ai+aja_i \cdot a_j + a_i + a_j este divizibil cu MM.

Restricții și precizări

  • 2N100 0002 \leq N \leq 100 \ 000
  • 0ai10180 \leq a_i \leq 10^{18}; i{1,2,...,n}\forall i \in \{1, 2, ..., n \}
  • 1M10171 \leq M \leq 10^{17}
  • Pentru teste în valoare de 2323 puncte: 2N5 0002 \leq N \leq 5 \ 000, 0ai1090 \leq a_i \leq 10^9; 1M1091 \leq M \leq 10^9
  • Pentru alte teste în valoare de 1313 puncte: 2N1 0002 \leq N \leq 1 \ 000
  • Pentru alte teste în valoare de 3333 puncte: 0ai1090 \leq a_i \leq 10^9; 1M1091 \leq M \leq 10^9, iar numerele aia_i au în scrierea binară cel mult 33 cifre egale cu 11.
  • Pentru alte teste în valoare de 3131 puncte: nu avem alte restricții.

Exemplul 1

prosum.in

4 13
6 15 6 1

prosum.out

2

Explicație

Există două perechi de indici având proprietatea cerută, (1,4)(1, 4) și (3,4)(3, 4), deoarece avem 61+6+1=136 \cdot 1 + 6 + 1 = 13, care este divizibil cu M=13M = 13.

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