ConcursC++17

sudoku

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.

Figura 1 din enunțul original al problemei sudoku.Figura 1 din enunțul original al problemei sudoku.Mărește schema ↗

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:

Figura 2 din enunțul original al problemei sudoku.Figura 2 din enunțul original al problemei sudoku.Mărește schema ↗

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

  • 2≤n≤322 \leq n \leq 32;
  • 1≤k<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}

Sursă și autori

ONI 2013, clasele 8. Cristina Sichim.

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 ↑