Advertisement
heian

Untitled

Oct 24th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. #include <fstream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. int n;
  7.  
  8. int main()
  9. {
  10. int ziua,x,numar_divizori,numar_divizori_anterior , lungime_secventa,n,secvente_minunate;
  11. ifstream fin("furnici.in");
  12. fin>>n;
  13. lungime_secventa = 1;
  14. secvente_minunate=0;///numarul asta il vom afisa la sfarsit
  15. numar_divizori_anterior = 2000000000;
  16. ///de ce 2000000000?
  17. ///pentru ca pun un numar foarte mare la inceput,
  18. ///ca sa fiu sigur ca in prima zi nu vom avea mai
  19. ///multi divizori de numar_divizori_anterior
  20.  
  21.  
  22. for(ziua=1;ziua<=n;ziua++)
  23. {
  24. fin>>x;
  25. numar_divizori = 0;
  26. ///acum calculez numarul de divizori ai lui x
  27. int d;
  28. for(d=1;d<sqrt(x);d++)
  29. if(x%d==0)
  30. numar_divizori = numar_divizori+2;///adun si divizorul d, si perechea lui, adica x/d
  31. if(d*d==x)///numarul este patrat perfect, deci are numar impar de divizori
  32. numar_divizori++;
  33.  
  34. ///acum stiu numarul de divizori din ziua i
  35. ///dar trebuie sa il compar cu numarul de divizori din
  36. ///ziua anterioara, adica ziua i-1
  37. if(numar_divizori > numar_divizori_anterior)
  38. {
  39. ///am gasit inca un numar cu mai
  40. ///multi divizori decat in ziua precedenta,
  41. ///deci secventa creste
  42. lungime_secventa++;
  43. }
  44. else
  45. {
  46. ///s-a rupt lantul de iubire
  47. ///adica s-a intrerupt secventa minunata
  48. ///si noi trebuie sa numaram cate secvente minunate exista
  49. if(lungime_secventa>=2)
  50. secvente_minunate++;
  51. lungime_secventa = 1;
  52. ///de ce 1 si nu 0?
  53. ///pai chiar daca nu mai avem o secventa din aia lunga si frumoasa,
  54. ///avem o secventa de lungime 1, formata din elementul din ziua curenta
  55. }
  56. numar_divizori_anterior = numar_divizori;
  57. }
  58. fin.close();
  59. ofstream fout("furnici.out");
  60. fout<<secvente_minunate<<"\n";
  61. fout.close();
  62. return 0;
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement