Cod sursa(job #2512852)

Utilizator butasebiButa Gabriel-Sebastian butasebi Data 21 decembrie 2019 19:19:03
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;
int paw(int a, int b)
{
    if(b == 0)return 1;
    if(b == 1)return a;
    if(b % 2 == 0)return paw(a, b / 2) * paw(a, b / 2);
    if(b % 2 == 1)return a * paw(a, b / 2) * paw(a, b / 2);
}
int a, MOD, x, d, fi, fm;
int main()
{
    ifstream f("inversmodular.in");
    ofstream g("inversmodular.out");
    f >> a >> MOD;
    //Aflam fi(MOD)
    x = MOD;
    d = 2;
    fi = 1;
    do
    {
        fm = 0;
        while(x % d == 0)
        {
            x = x / d;
            fm ++;
        }
        if(fm > 0)fi = fi * paw(d, fm - 1) * (d - 1);
        d ++;
        if(d * d > x)fi = fi * (x - 1), x = 1;
    }while(x != 1);
    g << paw(a, fi - 1) % MOD;
    return 0;
}