Cod sursa(job #2756056)

Utilizator AndreiKatsukiAndrei Dogarel AndreiKatsuki Data 29 mai 2021 12:21:25
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("inversmodular.in");
ofstream g("inversmodular.out");

long long phi(long long n){
    long long res=n;
    for(int i=2;i*i<=n;++i){
        if(n%i==0){
            res*=(i-1);
            res/=i;
            while(n%i==0){
                n/=i;
            }
        }
    }
    if(n>1){
        res*=(n-1);
        res/=n;
    }
    return res;
}

long long put(long long a, long long n){
    long long p=1;
    while(n){
        if(n%2){
            p=p*a;
        }
        a=a*a;
        n/=2;
    }
    return p;
}

int main(){
    long long a, n;
    f >> a >> n;
    g << put(a, phi(n)-1)%n;
    return 0;
}