Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///euclid+clasic (most efficient)
- #include <fstream>
- #include <iostream>
- ///#define VALMAX 1000005
- using namespace std;
- ifstream fin("pilot.in");
- ofstream fout("pilot.out");
- ///int cmmdc_f(int, int);
- int n, x, d, p, a, nrp, nrs, nrl;
- int main()
- {
- fin >> n >> x;
- for (int i = 1; i <= n; i++) {
- fin >> p >> a; /// p = codul pilotului(aviatorului) si a = codul avionului
- ///aflu cmmdc(p, a) pentru obtine codul spectacolului i
- int u = p;
- int y = a;
- int r = u%y;
- while (r) {
- u = y;
- y = r;
- r = u%y;
- }
- int cmmdc = y; /// cmmdc este acum codul spectacolului i
- if (cmmdc % x == 0)
- {
- nrs++; /// cresc numarul de aviatori speciali
- /// testez daca nu cumva acest aviator este legendar
- /// determin cati divizori primi are cmmdc
- int nrdivp = 0;
- for (int j = 2; j * j <= cmmdc; j++)
- {
- if (cmmdc % j == 0)
- {
- nrdivp++;
- while (cmmdc % j == 0)
- cmmdc /= j;
- }
- }
- if (cmmdc != 1) nrdivp++;
- if (nrdivp == 2)
- nrl++;
- }
- }
- /// afisez numarul de aviatori care sunt DOAR speciali
- fout<<nrs<<' '; // separ cele doua numere prin spatiu
- /// afisez numarul de aviatori care sunt legendari
- fout<<nrl<<'\n';
- /// system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement