Cod sursa(job #2253140)

Utilizator cezarzbughinCezar Zbughin cezarzbughin Data 3 octombrie 2018 17:52:13
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int n,m,a,fi,d;
int putere(int b,int e)
{
    if(e==0)return 1;
    int r=putere(b,e/2);
    r=1LL*r*r%m;
    if(e%2)r=1LL*b*r%m;
    return r;
}
int main()
{
    f>>a>>n;
    m=fi=n;

    if(n%2==0){fi/=2;while(n%2==0)n/=2;}

    for(int d=3;d*d<=n;d+=2)if(n%d==0){fi=fi/d*(d-1);while(n%d==0)n/=d;}

    if(n>1){fi=fi/n*(n-1);}

    g<<putere(a,fi-1);
    return 0;
}