bazaf

Time limit: 0.5s Memory limit: 128MB Input: bazaf.in Output: bazaf.out

În matematică factorialul unui număr natural nenul KK este notat cu K!K! și este egal cu produsul numerelor naturale nenule mai mici sau egale cu KK.

Spre exemplu:

  • 1!=11! = 1;
  • 2!=12=22! = 1 \cdot 2 = 2;
  • 3!=123=63! = 1 \cdot 2 \cdot 3 = 6;
  • K!=123KK! = 1 \cdot 2 \cdot 3 \cdot \ldots \cdot K.


Orice număr natural NN poate fi descompus cu ajutorul numerelor factoriale astfel:
N=1!f1+2!f2+3!f3++m!fmN = 1! f_1 + 2! f_2 + 3! f_3 + \ldots + m! f_m,
unde coeficienții fif_i, cu 1im1 \leq i \leq m sunt numere naturale și în plus fm0f_m \neq 0.

Spre exemplu:

  • 20=1!2020 = 1! \cdot 20;
  • 20=1!6+2!4+3!120 = 1! \cdot 6 + 2! \cdot 4 + 3! \cdot 1;
  • 20=1!0+2!1+3!320 = 1! \cdot 0 + 2! \cdot 1 + 3! \cdot 3.

Dintre toate aceste descompuneri posibile există o singură descompunere, numită descompunere în bază factorială care respectă suplimentar condițiile 0fii0 \leq f_i \leq i, cu 1i<m1 \leq i < m și 0<fmm0 < f_m \leq m.

Spre exemplu:

  • 6=1!0+2!0+3!16 = 1! \cdot 0 + 2! \cdot 0 + 3! \cdot 1;
  • 17=1!1+2!2+3!217 = 1! \cdot 1 + 2! \cdot 2 + 3! \cdot 2;
  • 119=1!1+2!2+3!3+4!4119 = 1! \cdot 1 + 2! \cdot 2 + 3! \cdot 3+ 4! \cdot 4.

Cerinţă

Scrieți un program care rezolvă următoarele cerințe:

  1. Să se determine descompunerea în bază factorială a unui număr natural XX dat.
  2. Cunoscând o descompunere oarecare a unui număr natural YY să se determine descompunerea în bază factorială a acestuia.

Date de intrare

Fişierul de intrare este bazaf.in.

Acesta conţine pe prima linie un număr natural VV care poate avea doar valorile 11 sau 22 cu următoarea semnificație:

  • dacă valoarea lui VV este 11, pe a doua linie a fișierului de intrare se găsește un număr natural XX cu semnificația de mai sus;
  • dacă valoarea lui VV este 22, pe a doua linie a fișierului de intrare se găsește o descompunere a unui număr YY sub forma unui șir de valori naturale în care primul termen este mm, urmat de mm valori fif_i, care respectă condițiile fi0f_i \geq 0, cu 1i<m1 \leq i < m și fm0f_m \neq 0, despărțite prin câte un spațiu, cu semnificația de mai sus.

Date de ieșire

Fişierul de ieşire este bazaf.out.

Dacă valoarea lui VV este 11 atunci fișierul de ieșire va conţine descompunerea în bază factorială a numărului XX, iar dacă valoarea lui VV este 22 atunci fișierul de ieșire va conține descompunerea în bază factorială a numărului YY. Descompunerea în bază factorială presupune scrierea în fișierul de ieșire a unei singure linii sub forma unui șir de valori naturale în care primul termen este mm, urmat de mm valori fif_i, care respectă condițiile 0fii0 \leq f_i \leq i, cu 1i<m1 \leq i < m și 0<fmm0 < f_m \leq m, despărțite prin câte un spațiu, având semnificația de mai sus.

Restricții și precizări

  • 2X10152 \leq X \leq {10}^{15}
  • 1<m100 0001 < m \leq 100\ 000
  • 0fi1090 \leq f_i \leq {10}^9
  • Pentru rezolvarea corectă a primei cerință se va acorda 30%30\% din punctaj, iar pentru cea de-a doua cerință se va acorda 70%70\% din punctaj.

Exemplul 1

bazaf.in

1
17

bazaf.out

3 1 2 2

Explicație

V=1V = 1, deci se rezolvă doar prima cerință. X=17X = 17.

Descompunerea numărului X=17X = 17 în bază factorială conține 33 termeni și este formată din coeficienții 11, 22, 22 (17=1!1+2!2+3!217 = 1! \cdot 1 + 2! \cdot 2 + 3! \cdot 2).

Exemplul 2

bazaf.in

2
2 10 5

bazaf.out

3 0 1 3

Explicație

V=2V = 2, deci se rezolvă doar a doua cerință.

Descompunerea 2 10 5 este o descompunere cu 22 termeni având coeficienții 1010, 55 și corespunde numărului Y=20Y = 20.

Descompunerea în bază factorială a numărului Y=20Y = 20 va fi 3 0 1 3 (20=1!0+2!1+3!320 = 1! \cdot 0 + 2! \cdot 1 + 3! \cdot 3).

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