Cod sursa(job #3123075)

Utilizator proflaurianPanaete Adrian proflaurian Data 21 aprilie 2023 19:24:46
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int phi(int n)
{
    int r=n;
    if(n%2==0)
    {
        r/=2;
        while(n%2==0)n/=2;
    }
    for(int d=3; d*d<=n; d+=2)
        if(n%d==0)
        {
            r=r/d*(d-1);
            while(n%d==0)n/=d;
        }
    if(n>1)
        r=r/n*(n-1);
    return r;
}
int putere(int b,int e,int mod)
{
    if(e==0)return 1;
    int r=putere(b,e/2,mod);
    r=1LL*r*r%mod;
    if(e%2)r=1LL*r*b%mod;
    return r;
}
int invMod(int a,int n)
{
    int PHI=phi(n);
    return putere(a,PHI-1,n);
}
int main()
{
    int a,n;
    f>>a>>n;
    g<<invMod(a,n);
    return 0;
}