Cod sursa(job #3279369)

Utilizator SergiuS3003Sergiu Stancu Nicolae SergiuS3003 Data 22 februarie 2025 18:30:39
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("inversmodular.in");
ofstream g ("inversmodular.out");
int phi (int n)
{
    int phiN = n;
    for (int i = 2; i * i <= n; i++)
    {
        if (n % i == 0) ///atunci i este prim
        {
            phiN = phiN / i * (i - 1);
            while (n % i == 0)
            {
                n /= i;
            }
        }
    }
    if (n > 1)
    {
        phiN = phiN / n * (n - 1);
    }
    return phiN;
}
int exponRapida (int a, int p, int mod)
{
    int rez = 1;
    while (p != 0)
    {
        if (p % 2 == 1)
        {
            rez = rez * 1LL * a % mod;
        }
        a = 1LL * a * a % mod;
        p = p / 2;
    }
    return rez;
}
int main()
{
    int A, N;
    f >> A >> N;
    g << exponRapida (A, phi (N) - 1, N);
    return 0;
}