factfact

Time limit: 0.1s Memory limit: 16MB Input: factfact.in Output: factfact.out

Într-un laborator secret de matematică, elevii au descoperit o categorie bizară de numere pe care le-au numit factfact. Pentru a înțelege aceste numere, profesorii au reamintit mai întâi definiția factorialului: pentru un număr natural n1n \geq 1, factorialul său, notat n!n! reprezintă produsul numerelor naturale de la 11 la nn (spre exemplu 4!=1234=244!=1⋅2⋅3⋅4=24). Un număr se numește factfact dacă se poate obține prin concatenarea (lipirea cifrelor) a exact două valori factoriale. De exemplu, numărul 1202412024 este factfact, deoarece se poate scrie ca 5!5! concatenat cu 4!4! adică 120120 urmat de 2424. În schimb, numărul 123123 nu este factfact, deoarece nu există două factoriale ale unor numere naturale care, concatenate, să formeze această valoare. Profesorii au observat că astfel de coduri apar frecvent în bazele de date ale școlii, iar analiza lor a devenit esențială pentru arhivare și securitate. Dorel, pasionat de algoritmi, a primit sarcina de a identifica rapid aceste numere speciale, de a le compara și de a analiza secvențele în care apar, pentru a optimiza sistemul informatic al laboratorului. În primă fază, Dorel ar vrea să afle dacă un număr dat este factfact sau nu. Apoi, dându-se numerele din baza de date a școlii, ar vrea să afle numărul factfact cu valoare maximă dintre acestea. Din motive de securitate, el trebuie să afle care este cea mai lungă secvență de numere factfact care să conțină obligatoriu cel mai mare număr factfact dintre toate.

Cerință

  • Determinați dacă un număr este factfact sau nu.
  • Dându-se mai multe numere, determinați cel mai mare număr factfact dintre ele.
  • Dându-se mai multe numere, determinați cea mai lungă secvență de numere factfact care să conțină obligatoriu cel mai mare număr factfact dintre toate.

Date de intrare

Pe prima linie a fișierului de intrare factfact.in se găsește CC reprezentând cerința.

  • Dacă C=1C=1, pe cea de-a doua linie se va afla un singur număr natural xx cu semnificația din enunț.
  • Dacă C=2C=2 sau C=3C=3, pe cea de-a doua linie se va un număr natural NN. Pe următoarea linie se vor afla NN numere naturale v1,v2,...,vNv_1,v_2,...,v_N, separate prin câte un spațiu.

Date de ieșire

Pe prima linie a fișierului de ieșire factfact.out se va găsi un singur număr întreg, după cum urmează:

  • Dacă C=1C=1, se va afișa 11 dacă numărul dat este factfact, iar 00 în caz contrar.
  • Dacă C=2C=2, se va afișa cel mai mare număr factfact dintre cele date.
  • Dacă C=3C=3, se va afișa lungimea secvenței cerute.

Restricții și precizări

  • Se garantează că pentru C=2C=2 și C=3C=3 există cel puțin un număr factfact în șir.
  • În formarea numărului factfact, cele două numere nu pot avea 00-uri nesemnificative (vezi exemplul 11)
  • 1N100 0001 \leq N \leq 100 \ 000;
  • 1vi,x1091 \leq v_i,x \leq 10^9
# Punctaj Restricții
1 10 C=1,1x100C=1, 1 \leq x \leq 100
2 10 C=1C=1
3 15 C=2,1vi100C=2, 1\leq v_i \leq 100
4 15 C=2C=2
5 25 C=3,1vi100C=3, 1\leq v_i \leq 100
6 25 C=3C=3

Exemplul 1

factfact.in

1 
101

factfact.out

0

Explicație

Deși 101101 poate fi format prin concatenarea lui 11 cu 0101, 0101 are un 00 nesemnificativ și nu se consideră un număr corect matematic.

Exemplul 2

factfact.in

2 
10 
100000 11 12 16 26 107 24120 108 24120 22

factfact.out

24120

Explicație

Cel mai mare număr factfact este 2412024120.

Exemplul 3

factfact.in

3 
10 
100000 11 12 16 26 107 24120 108 24120 22

factfact.out

2

Explicație

Cea mai lungă secvență formată doar din numere factfact care îl conțină pe 2412024120 este formată din ultimele 22 numere.

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