Cod sursa(job #1915153)

Utilizator tanasaradutanasaradu tanasaradu Data 8 martie 2017 19:56:41
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int a,n;
inline int Fi(int x)
{
    int fi,i,d;
    fi=x;
    d=2;
    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 Lgput(int x,int y)
{
    int  s=1;
    while(y)
    {
        if(y%2)
            s=1LL*s*x%n;
        y/=2;
        x=1LL*x*x%n;
    }
    return s;
}
int main()
{
    int x;
    fin>>a>>n;
    x=Fi(n)-1;
    fout<<Lgput(a,x)<<"\n";
    fin.close();
    fout.close();
    return 0;
}