ConcursC++17

subgeom

Miruna tocmai a învățat la ora de matematică despre progresii geometrice. Un șir de numere naturale nenule se numește progresie geometrică dacă este respectată una dintre următoarele două condiții:

  • Șirul este format dintr-un singur element.
  • Dacă șirul este format din N(N>1)N (N \gt 1) elemente v1,v2,…,vNv_1, v_2, \dots, v_N, atunci există un număr întreg KK mai mare strict decât 11 astfel încât raportul oricăror două elemente consecutive din șir este egal cu KK. Altfel spus, oricare ar fi un indice i,1≤i<N,vi+1/vi=Ki, 1 \leq i \lt N, v_{i+1} / v_i = K.

Miruna are o imaginație bogată, așa că inventează o noțiune nemaîntâlnită până acum - cea de subșir geometric: dându-se un șir de numere naturale nenule, un subșir care este progresie geometrică se numește subșir geometric.

Cerință

Scrieţi un program care pentru un şir de NN elemente afişează lungimea celui mai lung subşir geometric al său.

Date de intrare

Fișierul de intrare subgeom.in va conține pe prima linie numărul natural TT reprezentând numărul de seturi de date din fișier. Fiecare dintre următoarele TT linii conține un set de date, sub forma:

N v1 v2 … vNN \ v_1 \ v_2 \ \dots \ v_N

Prima valoare este un număr natural NN, reprezentând numărul de elemente din șir, urmat de cele NN numere naturale nenule ce alcătuiesc șirul, separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire subgeom.out va conține TT linii, câte o linie pentru fiecare set de date. Linia ii conține un număr natural reprezentând lungimea maximă a unui subșir geometric al șirului descris pe linia i+1i + 1 în fișierul de intrare.

Restricții și precizări

  • 1≤T≤101 \leq T \leq 10
  • 1≤N≤5 0001 \leq N \leq 5 \ 000
  • Pentru 40%40\% din teste 1≤N≤1281 \leq N \leq 128
  • Elementele șirului sunt numere naturale din intervalul [1,105][1, 10^5]
  • Un subșir al unui șir v1,v2,…,vNv_1, v_2, \dots , v_N este format din elemente ale șirului considerate în ordinea în care acestea apar în șir: vi1,vi2,…,vik(1≤i1<i2<⋯<ik≤N)v_{i1}, v_{i2}, \dots, v_{ik} (1 \leq i1 \lt i2 \lt \dots \lt ik \leq N).

Exemplu

subgeom.in

6
3 5 3 7
3 8 4 2
3 4 4 4
3 5 1 10
4 1 2 3 9
5 6 2 8 6 18

subgeom.out

1
1
1
2
3
3

Explicație

Pentru primele trei teste toate subșirurile geometrice au lungimea 11.

Pentru al patrulea test soluția este formată din subșirul 5,105, 10.

Pentru al cincilea test soluția este formată din subșirul 1,3,91, 3, 9.

Pentru ultimul test soluția este formată din subșirul 2,6,182, 6, 18.

Sursă și autori

ONI 2008, clasele 10. Andrei Grigorean.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑