Cod sursa(job #2327141)

Utilizator sebi110Ciobanu Sebastian sebi110 Data 24 ianuarie 2019 13:58:06
Problema Invers modular Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
typedef long long ll;
ll getphi(ll n)
{
   ll rez=n,div=2;
   while(div*div<=n)
   {
       if(n%div==0)
       {
           while(n%div==0)
           {
               n/=div;
            rez=(rez/div)*(div-1);
           }
       }
       div++;
   }
   div=n;
   if(n!=1)
        rez=rez/div*(div-1);
   return rez;
}
ll mod;
ll mypow(ll a,ll p)
{
    ll rez=1;
    while(p!=0)
    {
        if(p%2==1)
            rez=(rez*a)%mod;
        a=(a*a)%mod;
        p/=2;
    }
    return rez;
}
int main()
{
    ll a,n,f;
    freopen("inversmodular.in","r",stdin);
    freopen("inversmodular.out","w",stdout);
    cin>>a>>n;
    f=getphi(n);
    mod=n;
    cout<<mypow(a,f-1);
    return 0;
}