Cod sursa(job #1369696)

Utilizator EhtRalpmetFMI Ardei Claudiu-Alexandru EhtRalpmet Data 3 martie 2015 10:40:44
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
//#include <iostream>
#include <fstream>
#include<vector>
#include<string>
#include<algorithm>


using namespace std;
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");

long long i,n,a,p,s;

long long getphi(long long n){
    long long nr=n;
    for(long long i=2;i*i<=n;i++){
        if(n%i==0){
            while(n%i==0){
                n/=i;
            }
            nr=nr/i*(i-1);
        }
    }
    if(n!=1){
        nr=nr/n*(n-1);
    }
    return nr;
}

long long pow(long long a,long long b){
    long long nr=a;
    long long s=1;
    for(long long p=1;p<=b;p=p<<1){
        if(p&b){
            s=(s*nr)%n;
        }
        nr=(nr*nr)%n;
    }
    return s;
}

int main(){
    cin>>a>>n;
    cout<<pow(a,getphi(n)-1);


    return 0;
}