Advertisement
a53

Pilot

a53
Nov 12th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. ///euclid+clasic (most efficient)
  2. #include <fstream>
  3. #include <iostream>
  4. ///#define VALMAX 1000005
  5. using namespace std;
  6. ifstream fin("pilot.in");
  7. ofstream fout("pilot.out");
  8. ///int cmmdc_f(int, int);
  9. int n, x, d, p, a, nrp, nrs, nrl;
  10.  
  11. int main()
  12. {
  13. fin >> n >> x;
  14. for (int i = 1; i <= n; i++) {
  15. fin >> p >> a; /// p = codul pilotului(aviatorului) si a = codul avionului
  16. ///aflu cmmdc(p, a) pentru obtine codul spectacolului i
  17. int u = p;
  18. int y = a;
  19. int r = u%y;
  20. while (r) {
  21. u = y;
  22. y = r;
  23. r = u%y;
  24. }
  25. int cmmdc = y; /// cmmdc este acum codul spectacolului i
  26. if (cmmdc % x == 0)
  27. {
  28. nrs++; /// cresc numarul de aviatori speciali
  29. /// testez daca nu cumva acest aviator este legendar
  30. /// determin cati divizori primi are cmmdc
  31. int nrdivp = 0;
  32. for (int j = 2; j * j <= cmmdc; j++)
  33. {
  34. if (cmmdc % j == 0)
  35. {
  36. nrdivp++;
  37. while (cmmdc % j == 0)
  38. cmmdc /= j;
  39. }
  40. }
  41. if (cmmdc != 1) nrdivp++;
  42.  
  43. if (nrdivp == 2)
  44. nrl++;
  45. }
  46. }
  47. /// afisez numarul de aviatori care sunt DOAR speciali
  48. fout<<nrs<<' '; // separ cele doua numere prin spatiu
  49. /// afisez numarul de aviatori care sunt legendari
  50. fout<<nrl<<'\n';
  51. /// system("pause");
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement