Advertisement
yoyoboyss

Untitled

Feb 23rd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3. #define ll long long
  4.  
  5. using namespace std;
  6.  
  7. ll N, K;
  8.  
  9. ll phi(ll n) {
  10. float result = n;
  11.  
  12. for (ll p = 2; p * p <= n; ++p) {
  13. if (n % p == 0) {
  14. while (n % p == 0)
  15. n /= p;
  16. result *= (1.0 - (1.0 / (float)p));
  17. }
  18. }
  19.  
  20. if (n > 1)
  21. result *= (1.0 - (1.0 / (float)n));
  22.  
  23. return (int)result;
  24. }
  25.  
  26. int main(){
  27.  
  28. freopen("inversmodular.in", "r", stdin);
  29. freopen("inversmodular.out", "w", stdout);
  30.  
  31. scanf("%lld%lld", &N, &K);
  32.  
  33. ll put = phi(K) - 1;
  34. ll nr = N;
  35. ll crt = 1;
  36.  
  37. for(ll p = 1; p <= put; p <<= 1){
  38. if (p & put)
  39. crt = (crt * nr) % K;
  40. nr = nr * nr % K;
  41. }
  42.  
  43. printf("%lld", crt);
  44.  
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement