Cod sursa(job #2568331)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 3 martie 2020 22:04:42
Problema Invers modular Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
ll a, n, r,tn;
ll fortza(ll i){
    if(i==1){
        return a;
    }
    ll t=fortza(i/2);
    t=(t*t)%tn;
    if(i&1){
        t=(t*a)%tn;
    }
    return t;
}
int main(){
    in>>a>>n;
    r=tn=n;
    for(int i=2; i<=n; ++i){
        if(n%i==0){
            while(n%i==0){
                n/=i;
            }
            r-=r/i;
        }
    }
    r-=(n>1?r/n:0);
    out<<fortza(r-1);
    return 0;
}