Cod sursa(job #3194742)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 19 ianuarie 2024 10:20:13
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream fin ("inversmodular.in");
ofstream fout ("inversmodular.out");
long long pp,nrdiv,nr,x,a,mod,p,d;
long long fct (long long x,long long n)
{
    long long nr=1,sol=1;
    for (int p=0; p<=30; p++)
    {
        nr=(nr*x)%mod;
        if ((n>>p)&1)
            sol=(sol*nr)%mod;
    }
    return sol;
}
int main ()
{
    fin>>a>>mod;
    x=mod;
    nrdiv=1;
    for (d=2; d*d<=x; d++)
    {
        if (x%d==0)
        {
            nr=0;
            pp=1;
            while (x%d==0)
            {
                x/=d;
                pp*=d;
                nr++;
            }
            pp/=d;
            nrdiv*=(d-1)*pp;
        }
    }
    if (x!=1)
        nrdiv*=(x-1);
    fout<<fct (a,nrdiv-1)%mod;
    return 0;
}