Cod sursa(job #1827673)

Utilizator tanasaradutanasaradu tanasaradu Data 12 decembrie 2016 08:24:08
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int n,m;
inline int Fi(int x)
{
    int d=2,fi=x;
    while(x>1 && d*d<=x)
    {
        if(x%d==0)
        {
            fi=(fi/d)*(d-1);
            while(x%d==0)
                x/=d;
        }
        d++;
    }
    if(x>1)fi=(fi/x)*(x-1);
    return fi;
}
inline int Putere(int x,int y)
{
    int s=1;
    while(y>0)
    {
        if(y%2==1)
        {
            s=(1LL*s*x)%n;
            y--;
        }
        y=y/2;
        x=(1LL*x*x)%n;
    }
    return s;
}
int main()
{
    int x;
    fin>>n>>m;
    x=Fi(n)-1;
    ///a^(fi(n))%n==1
    fout<<Putere(m,x)<<"\n";
    return 0;
}