Cerința
Se dă un vector cu n
elemente, numere naturale, și un număr k
, divizor al lui n
. Se împarte vectorul în k
secvențe disjuncte, numerotate de la 1
la k
. Să se stabilească dacă există două secvențe identice.
Date de intrare
Programul citește de la tastatură numerele n
și k
, iar apoi n
numere naturale, reprezentând elementele vectorului.
Date de ieșire
Programul va afișa pe ecran numerele i j
, i < j
reprezentând numerele de ordine a două secvențe identice, dacă există două astfel de secvențe, sau mesajul NU
, dacă nu există două astfel de secvențe.
Dacă există mai multe perechi de secvențe identice se vor considera cele cu numerele de ordine minime.
Restricții și precizări
1 ≤ k < n ≤ 1000
,k
este divizor al luin
- cele
n
numere citite vor fi mai mici decât1000
Exemplu
Intrare
15 5 3 6 4 7 6 6 6 4 6 7 6 6 4 4 5
Ieșire
2 4
Explicație
Vectorul se împarte în 5
secvențe: (3 6 4)
, (7 6 6)
, (6 4 6)
, (7 6 6)
și (4 4 5)
, numerotate de la 1
la 5
. A doua și a patra secvență sunt identice.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema kSecventa:
#include <iostream>
using namespace std;
int main(){
int n, x[1005], k;
cin >> n >> k;
for(int i = 1 ; i <= n ; ++ i)
cin >> x[i];
int p = 0, q = 0;
for(int i = 1 ; i < k && !p ; ++i)
for(int j = i + 1 ; j <= k && !p; j ++)
{
bool ok = true;
for(int v = 1; v <= n/k && ok ; v ++)
if(x[( i - 1 ) * (n / k) + v] != x[( j - 1 ) * (n / k) + v])
ok = false;
if(ok)
p = i, q = j;
}
if(p)
cout << p << " " << q;
else
cout << "NU";
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #521 kSecventa
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #521 kSecventa de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!