Cod sursa(job #3253324)

Utilizator nata.03Pal-Serban Natalia nata.03 Data 2 noiembrie 2024 11:30:56
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int phi(int n)
{
    int r = n , d = 2;
    while(n > 1)
    {
        if(n % d == 0)
        {
            r = r / d * (d - 1);
            while(n % d == 0)
                n /= d;
        }
        d ++;
        if(d * d > n)
            d = n;
    }
    return r;
}

int exp(int A , int n, int modulo)
{
    int P = 1;
    while(n)
    {
        if(n % 2 == 1)
        {
            P *= A;
            P%=modulo;
        }
        A *= A;
        A%=modulo;
        n /= 2;
    }
    return P;
}

int main()
{
    int a, N;
    f >> a >> N;
    int p= phi(N);
    g << exp(p-1,a,N);
    return 0;
}