Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Numim k-secvență într-un șir de numere naturale, o succesiune de termeni aflați pe poziții consecutive
- în șir, cu proprietatea că sunt divizibili cu numărul natural nenul k. Lungimea secvenței este egală cu
- numărul de termeni ai săi.
- Fișierul bac.txt conține numere naturale din intervalul [0,109]: pe prima linie un număr nenul k, iar
- pe a doua linie un șir de cel mult 106 numere, separate prin câte un spațiu. Cel puțin un termen din șir
- este divizibil cu k. Se cere să se afișeze pe ecran două valori, separate printr-un spațiu, reprezentând
- lungimea maximă a unei k-secvențe din șirul aflat în fișier, respectiv numărul de astfel de secvențe.
- Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de executare.
- Exemplu: dacă fișierul are conținutul alăturat,
- se afișează 4 2
- 5
- 2 10 5 20 21 0 10 60 15 3 9 20 20 5 45
- a. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)
- b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)*/
- ifstream f("bac.txt");
- int k,n,db=0,maxi=0,sordb=0;
- f>>k;
- while(f>>n)
- {
- if(n%k==0) db++;
- else{ if(db>=2) sordb++;
- if(db>maxi) maxi=db;
- db=0;
- }
- }
- if(db>maxi) maxi=db;
- cout<<maxi<<" "<<sordb;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement