xp

Time limit: 3s Memory limit: 1MB Input: xp.in Output: xp.out

Se consideră 33 şiruri, numite A,BA, B şi valval, fiecare dintre ele având câte NN elemente naturale nenule. Elementele din cadrul şirurilor sunt indexate de la 11 la NN. Cunoscându-se A[1]A[1], B[1]B[1] şi o valoare naturală nenulă PP, regula după care se calculează elementele şirurilor este următoarea:

Pentru 2iN2 \leq i \leq N avem:

A[i]=((A[i1]+P1) XOR (B[i1]+1) mod PA[i] = ((A[i-1] + P - 1) \ \textit{\textbf{XOR}} \ (B[i-1] + 1) \ \textit{\textbf{mod}} \ P

B[i]=((A[i1]+P1) OR (B[i1]+1) mod PB[i] = ((A[i-1] + P - 1) \ \textit{\textbf{OR}} \ (B[i-1] + 1) \ \textit{\textbf{mod}} \ P

Pentru 1iN1 \leq i \leq N avem:

val[i]=max{1,((i mod P) XOR ((A[i]+1) AND (B[i]+1)) mod P)) mod P}val[i] = max \{ 1, ((i \ mod \ P) \ XOR \ ((A[i] + 1) \ AND \ (B[i] + 1)) \ mod \ P)) \ mod \ P \}

Operaţiile utilizate în formulele de mai sus au următoare semnificaţie:

  • XOR\textit{\textbf{XOR}} : sau-exclusiv pe biţi
  • OR\textit{\textbf{OR}} : sau pe biţi
  • AND\textit{\textbf{AND}} : şi pe biţi
  • Fmod GF \textit{\textbf{mod}} \ G : reprezintă restul împărţirii lui FF la GG

Definim Prod[i]Prod[i] ca fiind egal cu: (produsul tuturor elementelor şirului val, cu excepţia lui val[i]val[i]) mod G\textit{\textbf{mod}} \ G.

Mai exact, Prod[i]=(val[1]val[2]val[i1]val[i+1]val[N]) mod QProd[i] = (val[1] \cdot val[2] \cdot \ldots \cdot val[i-1] \cdot val[i+1] \cdot \ldots \cdot val[N]) \ \textit{\textbf{mod}} \ Q.

Cerinţă

Să se calculeze valoarea Rez=Prod[1] XOR Prod[2] XOR  XOR Prod[N]Rez = Prod[1] \ XOR \ Prod[2] \ \textit{\textbf{XOR}} \ \ldots \ \textit{\textbf{XOR}} \ Prod[N] (adică XOR \textit{\textbf{XOR}} \ între toate cele NN valori Prod[i]Prod[i], 1iN1 \leq i \leq N).

Date de intrare

Fişierul de intrare xp.in conţine pe prima (şi singura) linie 55 numere naturale separate prin câte un spaţiu, reprezentând, în ordine, valorile N,A[1],B[1],PN, A[1], B[1], P şi QQ.

Date de ieşire

Fişierul de ieşire xp.out va conţine valoarea RezRez.

Restricții și precizări

  • 1N4 000 0001 \leq N \leq 4 \ 000 \ 000
  • 2P1 000 000 0002 \leq P \leq 1 \ 000 \ 000 \ 000
  • 2Q1 000 000 0002 \leq Q \leq 1 \ 000 \ 000 \ 000
  • 0A[1],B[1]P10 \leq A[1], B[1] \leq P - 1
  • Pentru 30%30\% dintre teste vom avea N10 000N \leq 10 \ 000
  • Pentru alte 20%20\% dintre teste vom avea 10 001N200 00010 \ 001 \leq N \leq 200 \ 000
  • Problema nu urmăreşte găsirea vreunei proprietăţi speciale a relaţiilor de generare a elementelor şirurilor A,BA, B şi valval

Exemplul 1

xp.in

5 4 6 10 15

xp.out

10

Explicație

Se obţin următoarele şiruri A,BA, B şi valval:

A[1]=4,B[1]=6,val[1]=4A[2]=0,B[2]=5,val[2]=2A[3]=5,B[3]=5,val[3]=5A[4]=8,B[4]=4,val[4]=5A[5]=0,B[5]=1,val[5]=5A[1]=4, B[1]=6, val[1]=4 \\ A[2]=0, B[2]=5, val[2]=2 \\ A[3]=5, B[3]=5, val[3]=5 \\ A[4]=8, B[4]=4, val[4]=5 \\ A[5]=0, B[5]=1, val[5]=5

Se obţin următoarele valori pentru şirul ProdProd (în ordine, de la 11 la 55):
10,5,5,5,510, 5, 5, 5, 5.

Obţinem Rez=10 XOR 5 XOR 5 XOR 5 XOR 5=10Rez = 10 \ \textit{\textbf{XOR}} \ 5 \ \textit{\textbf{XOR}} \ 5 \ \textit{\textbf{XOR}} \ 5 \ \textit{\textbf{XOR}} \ 5 = 10.

Exemplul 2

xp.in

3999999 9003 3333 30000 900330000

xp.out

594979072

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