Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <math.h>
- using namespace std;
- int n;
- int main()
- {
- int ziua,x,numar_divizori,numar_divizori_anterior , lungime_secventa,n,secvente_minunate;
- ifstream fin("furnici.in");
- fin>>n;
- lungime_secventa = 1;
- secvente_minunate=0;///numarul asta il vom afisa la sfarsit
- numar_divizori_anterior = 2000000000;
- ///de ce 2000000000?
- ///pentru ca pun un numar foarte mare la inceput,
- ///ca sa fiu sigur ca in prima zi nu vom avea mai
- ///multi divizori de numar_divizori_anterior
- for(ziua=1;ziua<=n;ziua++)
- {
- fin>>x;
- numar_divizori = 0;
- ///acum calculez numarul de divizori ai lui x
- int d;
- for(d=1;d<sqrt(x);d++)
- if(x%d==0)
- numar_divizori = numar_divizori+2;///adun si divizorul d, si perechea lui, adica x/d
- if(d*d==x)///numarul este patrat perfect, deci are numar impar de divizori
- numar_divizori++;
- ///acum stiu numarul de divizori din ziua i
- ///dar trebuie sa il compar cu numarul de divizori din
- ///ziua anterioara, adica ziua i-1
- if(numar_divizori > numar_divizori_anterior)
- {
- ///am gasit inca un numar cu mai
- ///multi divizori decat in ziua precedenta,
- ///deci secventa creste
- lungime_secventa++;
- }
- else
- {
- ///s-a rupt lantul de iubire
- ///adica s-a intrerupt secventa minunata
- ///si noi trebuie sa numaram cate secvente minunate exista
- if(lungime_secventa>=2)
- secvente_minunate++;
- lungime_secventa = 1;
- ///de ce 1 si nu 0?
- ///pai chiar daca nu mai avem o secventa din aia lunga si frumoasa,
- ///avem o secventa de lungime 1, formata din elementul din ziua curenta
- }
- numar_divizori_anterior = numar_divizori;
- }
- fin.close();
- ofstream fout("furnici.out");
- fout<<secvente_minunate<<"\n";
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement