Advertisement
a53

ELHC

a53
Jun 16th, 2021
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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