Cod sursa(job #2467814)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 5 octombrie 2019 08:45:56
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.in");
int LogP(int a, int n,int mod)
{
   int p=1;
   while(n)
   {
       if(n%2==1)
        p=1LL*p*a%mod;
       n/=2;
       a=1LL *a*a%mod;
   }
   return p;
}
int phi(int n)
{
    int p,sol;
    sol=n;
    p=2;
    for(p = 2;n>1 && p*p<=n;p++){
        if(n%p==0)
            sol=sol/p*(p-1);
        while(n%p==0)
          n/=p;


    }
    if(n > 1)
        sol = sol / n *(n-1);
    return sol;
}
int main()
{
    int a,n;
    fin >> a >> n;
    long long b;
    b=LogP(a,phi(n)-1,n);
    fout<<b;
    return 0;
}