Cod sursa(job #2494342)

Utilizator kywyPApescu tiGEriu kywy Data 17 noiembrie 2019 18:32:54
Problema Invers modular Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include<bits/stdc++.h>
using namespace std;

FILE* in=fopen("inversmodular.in", "r");
FILE* out=fopen("inversmodular.out", "w");

long long f(int n)
{
    long long ret=n-1;
    int div=2;
    while(div*div<=n)
    {
        if(n%div==0) ret-=(n/div-1);
        ++div;
    }
    return ret;
}

long long p(long long b, int e, int MOD)
{
    long long ret=1;
    while(e)
    {
        if(e%2) ret*=b;
        b*=b;
        b%=MOD;
        ret%=MOD;
        e>>=1;
    }
    return ret;
}
int main()
{
    int a, n;
    fscanf(in, "%d%d", &a, &n);
    fprintf(out, "%lld", p(a, f(n)-1, n));
}