puternic

Time limit: 0.3s Memory limit: 64MB Input: puternic.in Output: puternic.out

Un număr puternic este un număr natural mai mare decât 11 care are proprietatea că dacă este divizibil cu numărul prim pp atunci este divizibil și cu p2p^2. De exemplu, 3636 și 2727 sunt numere puternice, în timp ce 1212 nu este număr puternic deoarece este divizibil cu 33 și nu este divizibil cu 323^2. La ora de matematică elevii au aflat ce înseamnă un număr puternic. Pentru a verifica dacă elevii au înțeles, domnul profesor a scris pe tablă un șir de NN numere naturale X1,X2,,XNX_1, X_2, \dots, X_N și l-a rugat pe Mihai să ștergă din șir numerele puternice.

Analizând numerele rămase, Mihai a observat că se poate obține un număr puternic prin concatenarea a două numere din șirul rămas, numere egal depărtate de capetele acestui nou șir. Concatenarea presupune lipirea numărului din a doua jumătate a șirului la finalul celui aflat în prima jumătate. Dacă noul șir are număr impar de elemente, elementul din mijloc se ignoră. De exemplu, dacă șirul obținut după ștergerea numerelor puternice este: 1212, 11, 1919, 1313, 33, 2121, 55 atunci numerele obținute prin concatenare sunt 125125, 121121, 193193.

Cerinta

Scrieți un program care citește un număr natural NN și apoi un șir de NN numere naturale și determină:

  1. Câte numere puternice sunt în șirul dat;
  2. Care sunt perechile de numere din șirul rămas după ștergerea numerelor puternice, numere egal departate de capetele șirului, prin concatenarea cărora se obține un număr puternic.

Date de intrare

Fișierul de intrare puternic.in conține pe prima linie un număr natural CC. Pentru toate testele de intrare, numărul CC poate avea doar valoarea 11 sau 22. Pe a doua linie a fișierului se găsește numărul natural NN. Pe a treia linie se găsesc NN numere naturale separate prin câte un spațiu.

Date de ieșire

Dacă C=1C = 1, se va rezolva cerința 11. În acest caz, fișierul de ieșire puternic.out va conține pe prima linie un număr natural reprezentând numărul de numere puternice din șirul dat.

Dacă C=2C = 2, se va rezolva cerința 22. În acest caz, fișierul de ieșire puternic.out va conține perechile de numere egal depărtate de capetele șirului obținut după ștergere, prin concatenarea cărora de obține un număr puternic. Fiecare pereche se scrie pe câte un rând, iar numerele din pereche se scriu separate printr-un spațiu, primul număr fiind cel din stânga. Dacă sunt mai multe astfel de perechi se vor afișa, în ordine, începând cu cea apropiată de capetele noului șir. Dacă nu există nicio astfel de pereche, în fișierul puternic.out se va afișa 1-1.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000;
  • 1X1,X2,,XN1 000 000 0001 \leq X_1, X_2, \dots, X_N \leq 1 \ 000 \ 000 \ 000;
  • Pentru rezolvarea corectă a primei cerințe se obțin 3030 de puncte, iar pentru rezolvarea corectă a celei de a doua cerințe se obțin 7070 de puncte.

Exemplul 1

puternic.in

1
8
100 28 16 11 484 25 162 27

puternic.out

5

Explicație

Se rezolva prima cerință. Numerele puternice sunt 100 16 484 25 27100 \ 16 \ 484 \ 25 \ 27.

Exemplul 2

puternic.in

2
11
12 9 1 8 19 6 3 4 49 21 5

puternic.out

12 5
1 21

Explicație

Se rezolvă a doua cerință și se va folosi doar valoarea NN. După ștergerea numerelor puternice, șirul rămas este: 12 1 19 6 3 21 512 \ 1 \ 19 \ 6 \ 3 \ 21 \ 5.

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