Cod sursa(job #2782538)

Utilizator Theo14Ancuta Theodor Theo14 Data 12 octombrie 2021 17:37:27
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");

int MOD;

long long pow_log(long long a, long long b)
{
    long long p=1;
    while(b!=0)
    {
        if(b%2==1)
        {
            p*=a;
            p%=MOD;
        }
        a*=a;
        a%=MOD;
        b/=2;
    }
    return p;
}

int main()
{
    int a,n,sol,i;
    f>>a>>n;
    sol=n;
    MOD=n;
    for(i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            while(n%i==0)
                n/=i;
            sol/=i;
            sol*=(i-1);
        }
    }
    if(n!=1)
    {
        sol/=n;
        sol*=(n-1);
    }
    sol=pow_log(a,sol-1);
    g<<sol;
    return 0;
}