Cod sursa(job #1919463)

Utilizator gabrielamoldovanMoldovan Gabriela gabrielamoldovan Data 9 martie 2017 19:36:04
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long long n, m;

long long phi(long long nr)
{
    long long crt=nr;
    for(long long i=2; i*i<=nr; ++i)
    {
        if(nr%i==0)
        {
            while(nr%i==0)
            {
                nr/=i;
            }
            crt=(crt/i)*(i-1);
        }
    }
    if(nr!=1)
    {
        crt=(crt/nr)*(nr-1);
    }
    return crt;
}

int main()
{
    f>>n>>m;
    long long p=phi(m)-1, crt=1;
    for(long long i=1; i<=p; i<<=1)
    {
        if(i&p)
        {
            crt=(crt*n)%m;
        }
        n=(n*n)%m;
    }
    g<<crt;
    return 0;
}