ConcursC++17

Avid

Alex este un băiat căruia îi place să citească și care contorizează cât de mult a citit pe parcursul ultimelor nn zile. Mai precis, el și-a notat câte pagini a citit în fiecare dintre acestea. Chiar dacă pasiunea lui este literatura, își dorește să progreseze și la informatică. Alex și-a pus două întrebări legate de șirul format din numărul de pagini citite de el în ultimele nn zile, dar după ce a petrecut câteva zile gândindu-se la ele și-a dat seama că sunt prea dificile pentru el. Ajutați-l să găsească răspunsurile!

Cerință

Fie numărul nn, numărul pp și acel șir de valori notate de Alex în cele nn zile. Determinați răspunsul la următoarele întrebări care îl frământă pe Alex:

  1. Câte triplete de numere aflate pe poziții consecutive în șirul dat îndeplines condiția ca cel mai mare divizor comun al lor să aibă cel mult pp divizori naturali?
  2. Care este lungimea maximă a unei secvențe din șirul dat, în care cel mai mare divizor comun al oricărui triplet de numere situate pe poziții consecutive are cel mult pp divizori naturali?

Date de intrare

Fișierul avid.in conține pe prima linie un număr natural CC, având valoarea 11 sau 22, reprezentând numărul întrebării. Pe a doua linie se află două numere naturale nn și pp, în această ordine, cu semnificația din enunț. A treia linie din fișier conține nn numere naturale reprezentând șirul de valori notate în cele nn zile. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.

Date de ieșire

Fișierul avid.out va conține un singur număr, reprezentând răspunsul pentru întrebarea dată, CC.

Restricții

  • 1≤C≤21 \le C \le 2
  • 3≤n≤1 000 0003 \le n \le 1 \ 000 \ 000
  • 2≤p≤1002 \le p \le 100
  • 1≤ai≤5 000 0001 \le a_i \le 5 \ 000 \ 000, unde aia_i este numărul de pagini citite de Alex în ziua ii (Alex citește la o viteză impresionantă)
  • Pentru prima cerință, se garantează că există cel puțin un triplet cu proprietatea indicată.
  • Pentru a doua cerință, se garantează că există cel puțin o secvență validă cu proprietatea indicată.
#PunctajRestricții
112C=1C = 1, n≤1 000n \le 1 \ 000
217C=1C = 1, 1 000<n≤1 000 0001 \ 000 \lt n \le 1 \ 000 \ 000
329C=2C = 2, n≤1 000n \le 1 \ 000
442C=2C = 2, 1 000<n≤1 000 0001 \ 000 \lt n \le 1 \ 000 \ 000

Exemplu 1

avid.in

1
10 3
12 48 36 6 3 7 12 16 24 3

avid.out

6

Explicație

cmmdc(12,48,36)=12cmmdc(12, 48, 36) = 12, care are 66 divizori naturali.

cmmdc(48,36,6)=6cmmdc(48, 36, 6) = 6, care are 44 divizori naturali.

cmmdc(36,6,3)=3cmmdc(36, 6, 3) = 3, care are 22 divizori naturali.

cmmdc(6,3,7)=1cmmdc(6, 3, 7) = 1, care are 11 divizor natural.

cmmdc(3,7,12)=1cmmdc(3, 7, 12) = 1, care are 11 divizor natural.

cmmdc(7,12,16)=1cmmdc(7, 12, 16) = 1, care are 11 divizor natural.

cmmdc(12,16,24)=4cmmdc(12, 16, 24) = 4, care are 33 divizori naturali.

cmmdc(16,24,3)=1cmmdc(16, 24, 3) = 1, care are 11 divizor natural.

Deci, 66 dintre cele 88 triplete au cel mult p=3p = 3 divizori naturali.

Exemplu 2

avid.in

2
7 2
12 48 36 6 3 7 12

avid.out

5

Explicație

Pentru că p=2p = 2, cea mai lungă secvență este 36,6,3,7,1236, 6, 3, 7, 12.

Sursă și autori

OJI 2024, clasele 6. Buzatu Giulian.

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 ↑