secvente

Time limit: 0.5s Memory limit: 4MB Input: secvente.in Output: secvente.out

Mariei îi plac numerele prime și puterile numerelor prime. Pornind de la un număr prim pp, ea construiește noi numere, fiecare număr construit fiind un produs de forma pyp^y (yNy \in ℕ, y0y \neq 0) sau qpmq \cdot p^m, mNm \in ℕ și qq un număr prim, numindu-le numere pp-prime. De exemplu, numerele 2,3,4,5,6,7,8,10,11,12,13,14,16,172, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17 sunt primele 1414 numere 22-prime deoarece 2=212 = 2^1, 3=3203 = 3 \cdot 2^0, 4=224 = 2^2, 5=5205 = 5 \cdot 2^0, 6=3216 = 3 \cdot 2^1, 7=7207 = 7 \cdot 2^0, 8=238 = 2^3, 10=52110 = 5 \cdot 2^1, 11=112011 = 11 \cdot 2^0, 12=32212 = 3 \cdot 2^2, 13=132013 = 13 \cdot 2^0, 14=72114 = 7 \cdot 2^1, 16=2416 = 2^4, 17=172017 = 17 \cdot 2^0.

Într-o zi Maria a găsit o foaie de hârtie, pe care era scris un șir format din nn numere naturale nenule. Cum pe lângă numerele pp-prime ea este pasionată și de secvențe, și-a pus următoarea întrebare: câte secvențe sunt pe foaie cu următoarele proprietăți:

  • conțin exact kk numere pp-prime;
  • încep și se termină cu un număr pp-prim.

În plus, Maria dorește să știe care este poziția de început și cea de final, pentru fiecare secvență descoperită, relative la șirul scris pe foaia de hârtie.

Cerință

Scrieți un program care să citească mai multe seturi de date, fiecare set fiind format din numerele n,p,kn, p, k, cu semnificațiile din enunț, și șirul cu nn elemente a1,a2,a3,,ana_1, a_2, a_3, \dots, a_n, numerele Mariei. Programul va determina pentru fiecare set de date numărul secvențelor ce conțin exact kk numere pp-prime, precum și pozițiile de început și de final ale acestor secvențe în șirul din set.

Date de intrare

Pe prima linie a fișierului secvente.in se află numărul DD reprezentând numărul de seturi de date din fișier. Seturile de date sunt scrise în fișier pe linii succesive. Pentru fiecare set de date, prima linie conține câte trei numere naturale: nn (numărul de elemente de pe foaie), pp și kk (cu semnificația din enunț), separate prin câte un spațiu, iar fiecare dintre următoarele nn linii conține câte un număr natural al șirului a1,a2,a3,,ana_1, a_2, a_3, \dots, a_n, numerele din șirul Mariei.

Date de ieșire

Fișierul secvente.out va conține DD soluții corespunzătoare celor DD seturi de date. Pentru fiecare soluție prima linie va conține un număr xx reprezentând numărul de secvențe ce îndeplinesc proprietățile cerute, iar fiecare dintre următoarele xx linii vor conține câte 22 numere naturale, separate printr-un spațiu, reprezentând poziția de început, respectiv de final a fiecărei secvențe, linii ordonate crescător după poziția de început. Dacă în șir nu există o astfel de secvență, prima linie a setului va conține valoarea 00.

Restricții și precizări

  • 1D151 \leq D \leq 15;
  • 1k,n15 0001 \leq k, n \leq 15 \ 000;
  • 2p30 0002 \leq p \leq 30 \ 000; pp este un număr natural prim
  • 1a1,a2,a3,,an30 0001 \leq a_1, a_2, a_3, \dots, a_n \leq 30 \ 000; a1,a2,a3,,anNa_1, a_2, a_3, \dots, a_n \in ℕ
  • Pozițiile din șir sunt numerotate de la 1.
  • Numărul 11 nu este pp-prim.
  • O secvență dintr-un șir este formată din elemente aflate pe poziții consecutive în șirul dat.

Exemplu

secvente.in

2
5 3 2
7
27
4
45
1
3 5 7
3
4
5

secvente.out

2
1 2
2 4
0

Explicație

Cum D=2D = 2, fișierul de intrare conține două seturi de date.
Primul set de date: n=5n = 5, p=3p = 3, k=2k = 2 și aa = (7,27,4,45,17, 27, 4, 45, 1).
Șirul din acest set conține următoarele numere 33-prime:
a1=7a_1 = 7 (număr prim), a2=27=33a_2 = 27 = 3^3 (putere a lui 33) și a4=45a_4 = 45 = 5325 \cdot 3^2 (număr prim înmulțit cu o putere a lui 33).

În șir sunt două secvențe cu câte doua numere 33-prime: a1,a2a_1, a_2 respectiv a2,a3,a4a_2, a_3, a_4.
Pe prima linie a fișierului de ieșire se va scrie valoarea 22, iar pe următoarele două linii, pozițiile de început și de final ale celor două secvențe determinate.

Șirul a din al doilea set de date, n=3n = 3, p=5p = 5, k=7k = 7, aa = (3,4,53, 4, 5), nu conține nici o secvență cu proprietatea cerută. Astfel, în fișierul de ieșire, pe cea de-a patra linie, se va scrie valoarea 00.

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