Cod sursa(job #1691971)

Utilizator AlexandruRudiAlexandru Rudi AlexandruRudi Data 19 aprilie 2016 22:01:21
Problema Invers modular Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>

using namespace std;

long long a,n,x,fi,s,p[1000005];

long long power(long long a, long long p){
    if(p==1) return a%n;
    if(p%2==0) return power(a*a%n,p/2%n)%n;
    if(p%2==1) return a%n*power(a*a%n,(p-1)/2%n)%n;
}

int main()
{
    ifstream in("inversmodular.in");
    ofstream out("inversmodular.out");
    in >> a >> n;
    s=sqrt(n);
    fi=n;
    for(int i=2;i<=s;i++){
        if(n%i==0){
            while(n%i==0) n/=i;
            fi/=i;
            fi*=(i-1);
        }
    }
    if(n>1) fi/=n, fi*=(n-1);
    out << power(a,fi-1);

}