ConcursC++17

numere

Fie un număr natural X format din maximum 20 cifre, toate nenule. Adrian doreşte să construiască pe rând, în ordine crescătoare a valorii lor, toate numerele distincte care se pot forma prin schimbarea poziţiei cifrelor numărului X. Pentru că n este numărul său norocos, el doreşte să afle al n-lea număr care se obţine în acest fel.

Cerinţă

Scrieţi un program care determină al n-lea număr, cu numerotare de la 1, care se poate forma din cifrele lui X.

Date de intrare

Fişierul de intrare numere.in conţine pe prima linie cele două numere naturale n şi X separate printr-un singur spaţiu.

Date de ieşire

Fişierul de ieşire numere.out va conţine pe prima linie numărul natural Y, care reprezintă al n-lea număr care se poate forma cu toate cifrele numărului X. Dacă al n-lea număr generat în ordine crescătoare nu există, se va afişa -1.

Restricţii şi precizări

  • Pentru 20% din teste n ≤ 200 iar X are cel mult 9 cifre
  • Pentru celelalte teste 200≤n≤3⋅1011200 ≤ n ≤ 3 \cdot 10^{11}

Exemplul 1

numere.in

2 8264

numere.out

2486

Explicație

Considerând ordinea crescătoare a valorii, primul număr care se poate forma este 2468 iar al doilea 2486

Exemplul 2

numere.in

3 523525

numere.out

225535

Explicație

Primele trei numere care se formează sunt: 223555223555, 225355225355, 225535225535.

Sursă și autori

ONI 2009, clasele 11, 12. Constantin Gălăţan.

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 ↑