Fişierul intrare/ieşire:cifrul.in, cifrul.outSursăONIS 2015, Runda 1
AutorMurtaza AlexandruAdăugată deThe_Viper_The_Mountain_And_The_ImpUNIBUC Impaler-009 Challenge costyv87 The_Viper_The_Mountain_And_The_Imp
Timp execuţie pe test1 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Por Costel si Cifrul

Por Costel a gasit legendarul seif despre care se spune ca “ascunde atata mancare incat un om se poate hrani o viata intreaga”. El crede ca ii va ajunge pentru micul dejun, insa trebuie mai intai sa treaca de mecanismul ei defensiv care seamana foarte mult (in mod curios) cu cel al unei valize.
Pentru a deschide seiful, el trebuie sa introduca un cod de lungime N (N cifre de la de la 0 la K-1). Codul se introduce prin intermediul a N rotite. Acestea pot fi actionate in sus sau in jos (daca o rotita indica valoarea x, ea poate fi actionata printr-o singura miscare sa indice valoarea (x+1) mod K sau sa indice valoarea (x-1) mod K).
Legenda spune ca seiful a fost faurit de M porci stravechi. De aceea, exista M coduri distincte care pot deschide seiful. Mai mult, seiful s-a deteriorat cu timpul iar acum fiecare rotita din cele N are o “marja de eroare” data printr-un numar D. Ce inseamna acest lucru este ca un cod X va deschide seiful daca exista un cod din cele M pentru care: distanta(X_i,M_i)D oricare i de la 1 la N unde:

  • distanta dintre doua cifre a si b insemna numarul minim de actionari ale unei rotite pentru a trece de la cifra a la cifra b
  • X_i insemna a i-a cifra din codul X, analog definim M_i

Cum sistemul a fost proiectat de niste porci, era de asteptat sa nu fie de prea mare calitate. Exista foarte multe combinatii care deschid seiful, atat de multe incat noi va cerem sa calculati numarul lor modulo 10^9 + 7. Por Costel deja se linge pe bot de pofta !

Date de intrare

Fişierul de intrare cifrul.in va contine pe prima linie T, numarul de teste, pe urmatoarele linii vor fi descrise testele astfel: prima linie va contine N, M, K, D, urmatoarele M linii contin cate N numere separate prin spatii (reprezentand codurile celor M porci stravechi). A i-a dintre aceste linii descrie al i-lea cod

Date de ieşire

În fişierul de ieşire cifrul.out va contine T linii, fiecare avand numarul cerul pentru testul respectiv.

Restricţii

  • 1T6
  • 1N100
  • 1M12
  • 1K,D10^6

Exemplu

cifrul.incifrul.out
2
1 2 10000 3
1
6
3 1 100 5
1 6 30
12
1331
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content