Cod sursa(job #2759775)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 20 iunie 2021 14:31:59
Problema Invers modular Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
int n,a;
int phi(int nn){
    int rez=nn;
    for(int i=2;i*i<=nn;i++){
            while(n%i==0){
                nn/=i;
                rez-=rez/i;
            }
    }
    if(nn>1)rez-=rez/nn;
    return rez;
}
ll pwr(ll nr,ll p){
    ll rez=1;
    while(p){
        if(p&1)rez*=nr;
        p=p>>1;
        nr*=nr;
        rez=rez%n;
        nr=nr%n;
    }
    return rez;
}

int main(){
    in>>a>>n;
    out<<pwr(a,phi(n)-1);
}