Lui Hadrianus îi plac matricele infinite care sunt generate după o anumită regulă. Înainte de primul baraj, el se gândeşte la o astfel de matrice, în care elementul de pe linia şi coloana este egal cu xor . Hadrianus doreşte să determine suma elementelor pentru unele submatrici ale matricii formate după regula de mai sus.
Se numeşte submatrice de coordonate , cu şi , o zonă dreptunghiulară din matrice care are colţul stânga-sus pe linia şi coloana şi colţul dreapta-jos pe linia şi coloana .
Operaţia xor reprezintă operaţia de disjuncţie exclusivă realizată pe biţii operanzilor. În Pascal, operatorul corespunzător este xor
, iar în C/C++ acest operator este ^
. De exemplu, xor = . Matricea formată are primele elemente conform figurii alăturate.
Cerinţă
Scrieţi un program care citeşte coordonatele a submatrice şi afişează pentru fiecare dintre aceste submatrice suma elementelor sale modulo (restul împărţirii sumei la ), unde este un număr prim.
Date de intrare
Fişierul de intrare xor.in
conţine pe prima linie şi , cu semnificaţia de mai sus. Fiecare din următoarele linii conţine câte numere naturale , despărţite printr-un spaţiu, reprezentând coordonatele unei submatrice.
Date de iesire
Fişierul de ieşire xor.out
conţine exact linii. Linia cu numărul conţine suma modulo a elementelor celei de a -a submatrice din fişierul de intrare.
Restricții și precizări
- Pentru fiecare submatrice din cele , şi
- este număr prim mai mic sau egal decât
- Liniile şi coloanele matricei sunt numerotate începând cu
- La evaluare se vor folosi teste.
- Pentru primele teste, şi
- Pentru testele şi ,
- Pentru testele şi ,
- Pentru testele şi ,
- Celelalte două teste respectă limitele de mai sus şi nu au nicio particularitate specială
Exemplu
xor.in
5 29473
1 3 2 4
2 2 12 15
10000 10000 11000 11000
123 51 54667341 1878099
1234567 1234567 1234678 1234678
xor.out
14
1165
23799
18591
549
Explicație
Prima submatrice este formată din elementele , , şi . Suma modulo a acestor elemente este: .