forus

Time limit: 0.5s Memory limit: 16MB Input: forus.in Output: forus.out

La ora de educație tehnologică a clasei a V-a profesorul Forus, pasionat de matematică, a adus pentru fiecare dintre cei NN elevi câte un carton pe care este scris câte un număr natural nenul. Fiecare elev poate folosi cartonul așa cum l-a primit sau poate să taie o singură dată cartonul între două cifre și să lipească partea stângă la finalul părții drepte. Elevul NU are voie să facă o tăietură în fața cifrei 00, deci niciunul dintre numerele obținute NU poate să înceapă cu cifra 00. Dintre toate numerele pe care le poate obține, elevul îl alege pe cel care are număr minim de divizori, iar dacă poate obține mai multe astfel de numere, îl alege pe cel mai mic dintre ele. La sfârșitul orei, profesorul strânge cartoanele cu numerele alese, în ordinea distribuirii lor. De exemplu, dacă inițial elevul primește cartonul cu numărul 25082\boxed{\color{red}{25082}} atunci el are doar următoarele trei variante de tăiere și lipire:
250825082225082822502508222508\displaystyle \begin{array}{cc} \boxed{\color{red}{2}} & \boxed{\color{red}{5082}} & \rightarrow & \boxed{\color{red}{50822}} \\ \boxed{\color{red}{250}} & \boxed{\color{red}{82}} & \rightarrow & \boxed{\color{red}{82250}} \\ \boxed{\color{red}{2508}} & \boxed{\color{red}{2}} & \rightarrow & \boxed{\color{red}{22508}} \end{array}

Cerința

Scrieţi un program care citeşte numărul natural NN și cele NN numere scrise pe cartoanele aduse de profesorul Forus, apoi rezolvă următoarele două cerinţe:

  1. Determină numărul de cartoane pe care elevii au voie să le taie de oriunde (NU conțin cifre în fața cărora NU au voie să taie);
  2. Determină, în ordinea strângerii cartoanelor, numerele preluate de către profesorul Forus la finalul orei.

Date de intrare

Fișierul de intrare forus.in conține pe prima linie un număr natural CC reprezentând cerința din problemă care trebuie rezolvată (11 sau 22). A doua linie din fișier conține un număr natural NN, reprezentând numărul de elevi, iar a treia linie din fișier conţine NN numere naturale, separate prin câte un spațiu, reprezentând numerele scrise pe cartoanele aduse de profesor, în ordinea distribuirii lor.

Date de ieșire

Dacă C=1C = 1, fişierul de ieşire forus.out conţine pe prima linie un număr natural reprezentând răspunsul la cerinţa 11.
Dacă C=2C = 2, fişierul de ieşire forus.out conţine pe prima linie NN numere naturale, separate prin câte un spațiu, reprezentând răspunsul la cerința 22; numerele sunt scrise în ordinea în care au fost strânse.

Restricții și precizări

  • 2N302 \leq N \leq 30;
  • 1numa˘rul natural de pe carton<1 000 000 0001 \leq \text{numărul natural de pe carton} \lt 1 \ 000 \ 000 \ 000;
  • Pentru rezolvarea corectă a cerinţei 11 se acordă 2525 de puncte; pentru rezolvarea corectă a cerinței 22 se acordă 7575 de puncte.

Exemplul 1

forus.in

1
5
1234 25082 543 52 150

forus.out

3

Explicație

Exemplul 2

forus.in

2
5
51 1234 50822 345 150

forus.out

15 2341 25082 453 501

Explicație

Cerinţa este 22. Pentru cartonul cu numărul 5151 se pot obţine numerele 1515 și 5151. Ambele numere au câte 44 divizori. Astfel, se va alege numărul 1515, fiind cel mai mic. Pentru cartonul cu numărul 12341234 (44 divizori) pot fi obținute numerele: 23412341 (22 divizori), 34123412 (66 divizori) și 41234123 (88 divizori). Se va alege numărul 23412341 pentru că are numărul minim de divizori. Analog se va proceda pentru toate celelalte numere din șir.

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