ConcursC++17

xp

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 2≤i≤N2 \leq i \leq N avem:

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

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

Pentru 1≤i≤N1 \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[i−1]⋅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ă KaTeX parse error: Unexpected character: '\' at position 23: …{\textbf{XOR}} \̲ între toate cele NN valori Prod[i]Prod[i], 1≤i≤N1 \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

  • 1≤N≤4 000 0001 \leq N \leq 4 \ 000 \ 000
  • 2≤P≤1 000 000 0002 \leq P \leq 1 \ 000 \ 000 \ 000
  • 2≤Q≤1 000 000 0002 \leq Q \leq 1 \ 000 \ 000 \ 000
  • 0≤A[1],B[1]≤P−10 \leq A[1], B[1] \leq P - 1
  • Pentru 30%30\% dintre teste vom avea N≤10 000N \leq 10 \ 000
  • Pentru alte 20%20\% dintre teste vom avea 10 001≤N≤200 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

Sursă și autori

ONI 2010, clasele 10. Mugurel Ionuț Andreica.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑