Cod sursa(job #2424694)

Utilizator AndreiStrAndrei Stroici AndreiStr Data 23 mai 2019 18:06:33
Problema Invers modular Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.55 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int n,a,x;
int putere(int b,int e)
{
    if(e==0)return 1;
    int r=putere(b,e/2);
    r=1LL*r*r%n;
    if(e%2==1)r=1LL*r*b%n;
    return r;
}
int euler(int n)
{
    int phi=1;
    if(n%2==0){n/=2;while(n%2==0){n/=2;phi*=2;}}
    for(int d=3;d*d<=n;d+=2)
        if(n%d==0){n/=d;while(n%d==0){n/=d;phi*=d;}}
    if(n>1)phi*=n-1;
    return phi;
}
int main()
{
    f>>a>>n;
    g<<putere(a,euler(n)-1);
    return 0;
}