Advertisement
mihaimarcel21

ELHC

Apr 24th, 2021
754
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. ifstream fin("elhc.in");
  5. ofstream fout("elhc.out");
  6. int T, G, P, cnt;
  7. int po(int b, int e, int M)
  8. {
  9.     if(e==0) return 1;
  10.     else if(e%2==0)
  11.     {
  12.         int z = po(b,e/2,M);
  13.         return (1LL*z*z)%M;
  14.     }
  15.     else return (1LL*b*po(b,e-1,M))%M;
  16. }
  17. int Factor(int nr)
  18. {
  19.     int d, p;
  20.     while(nr%2==0)
  21.     {
  22.         p++;
  23.         nr/=2;
  24.     }
  25.     if(p)
  26.     {
  27.         if(po(G,(P-1)/2, P)==1)
  28.             return 1;
  29.     }
  30.     for(d=3; d*d<=nr; d+=2)
  31.     {
  32.         p=0;
  33.         while(nr%d==0)
  34.         {
  35.             p++;
  36.             nr/=d;
  37.         }
  38.         if(p)
  39.         {
  40.             if(po(G,(P-1)/d, P)==1)
  41.                 return 1;
  42.         }
  43.     }
  44.     if(nr>1)
  45.         if(po(G,(P-1)/nr, P)==1)
  46.                 return 1;
  47.     return 0;
  48. }
  49. int main()
  50. {
  51.     fin>>T;
  52.     for(int i=1; i<=T; ++i)
  53.     {
  54.         fin>>G>>P;
  55.         if(G==1 && P==2)
  56.             fout<<1;
  57.         else
  58.             fout<<!Factor(P-1);
  59.     }
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement