Cod sursa(job #1392185)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 18 martie 2015 13:53:26
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#define ull unsigned long long

using namespace std;
ull n,x,a;
ifstream f ("inversmodular.in");
ofstream g ("inversmodular.out");
ull pow(ull x, ull n, ull MOD)
{
    ull y=x,sol=1;
    while (n)
    {
        if ((1&n)>0) sol=(sol*y)%MOD;
        y=(y*y)%MOD;
        n/=2;
    }
    return sol;
}
ull phi (ull n)
{
    ull i,sol=n;
    for (i=2;i*i<=n;i++)
    {
        if (n%i==0)
        {
            while (n%i==0) n/=i;
            sol=(sol/i)*(i-1);
        }
    }
    if (n!=1) sol=sol/n*(n-1);
    return sol;
}
int main()
{
    f>>a>>n;
    g<<pow(a,phi(n)-1,n);
    return 0;
}