sudoku

Time limit: 0.1s Memory limit: 4MB Input: sudoku.in Output: sudoku.out

Numim tablou Sudoku o matrice cu n2n^2 elemente ce conține doar cifrele 11, 22 și 33 astfel încât în fiecare pătrat format din 2×22×2 elemente alăturate să existe toate cele 33 cifre și oricare două elemente alăturate pe linie sau pe coloană să fie distincte. Fiecărui tablou Sudoku ii se asociază un număr obținut prin scrierea cifrelor în ordine, începând cu prima linie.

De exemplu, tabloul Sudoku din imaginea alăturată are asociat numărul: 2132132132213211321321321.

Se definește șirul S(n)S(n) ca fiind un șir ordonat, format din toate tablourile Sudoku cu n2n^2 elemente, {s1,s2,s3,s_1, s_2, s_3, \cdots}. Pentru orice pereche (si,sj)(s_i, s_j) din S(n)S(n) cu i<ji \lt j, numărul asociat tabloului Sudoku si este strict mai mic decât numărul asociat tabloului Sudoku sjs_j.

Pentru n=2n = 2, șirul S(2)S(2) conține, în ordine, tablourile Sudoku:

Cerință

Date fiind două numere naturale nn și kk să se determine:

  • numărul tablourilor Sudoku din șirul S(n)S(n);
  • tabloul Sudoku aflat pe poziția kk în șirul S(n)S(n).

Date de intrare

Fișierul sudoku.in conține pe prima sa linie două numere naturale nn și kk separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire sudoku.out va conține:

pe prima linie un număr natural ce reprezintă numărul tablourilor Sudoku din șirul S(n)S(n)
pe următoarele nn linii se găsesc câte nn cifre, separate prin câte un spațiu, ce reprezintă, în ordine, liniile tabloului Sudoku aflat pe poziția kk în șirul S(n)S(n).

Restricții și precizări

  • 2n322 \leq n \leq 32;
  • 1k<10191 \leq k \lt 10^{19};
  • Pentru rezolvarea corectă a cerinței 11 se acordă 20%20\% din punctaj, iar pentru rezolvarea corectă cerinței 22 se acordă 80%80\% din punctaj.
  • Acordarea punctajului pentru a doua cerință se face numai dacă în fișierul de ieșire există un răspuns pentru prima cerință, indiferent de corectitudinea acestuia.

Exemplul

sudoku.in

2 6

sudoku.out

12
2 1
3 2

Explicație

Șirul S(2)S(2) conține 1212 tablouri Sudoku, pe poziția 66 în șir aflându-se tabloul:

  • (2132)\begin{pmatrix} 2 & 1 \\ 3 & 2 \end{pmatrix}

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