Advertisement
Alex_tz307

invers modular totient

Sep 10th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.66 KB | None | 0 0
  1. #include<fstream>
  2. #include<cmath>
  3. using namespace std;
  4. ifstream f("inversmodular.in");
  5. ofstream g("inversmodular.out");
  6. long long MOD;
  7.  
  8. long long pow_log(long long a,long long k)
  9. {
  10.     long long sol=1;
  11.     while(k!=0)
  12.     {
  13.         if(k%2==1)
  14.             sol*=a,sol%=MOD;;
  15.         a*=a;
  16.         a%=MOD;
  17.         k/=2;
  18.     }
  19.     return sol;
  20. }
  21.  
  22. int main()
  23. {
  24.     long long a,n,sol,i;
  25.     f>>a>>n;
  26.     sol=n;
  27.     MOD=n;
  28.     for(i=2;i*i<=n;i++)
  29.     if(n%i==0)
  30.     {
  31.         while(n%i==0)
  32.             n/=i;
  33.         sol/=i;
  34.         sol*=(i-1);
  35.     }
  36.     if(n!=1)
  37.         sol/=n,sol*=(n-1);
  38.     sol=pow_log(a,sol-1);
  39.     g<<sol;
  40.     return 0;
  41. }
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement