Cod sursa(job #3233812)

Utilizator tmaxmaxTeodor Maxim tmaxmax Data 5 iunie 2024 00:12:53
Problema Invers modular Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>

long phi(long n) {
    long r = n;
    for (long i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            while (n % i == 0)
                n /= i;
            r -= r / i;
        }
    }
    if (n > 1)
        r -= r / n;
    return r;
}

long powm(long a, long n, long mod) {
    long r = 1, s = a;

    while (n > 0) {
        if (n % 2 == 1) {
            r = (r * s) % mod;
        }
        s = (s * s) % mod;
        n /= 2;
    }

    return r;
}

int main(void) {
    long a, n;
    scanf("%ld %ld", &a, &n);

    printf("%ld\n", powm(a, phi(n) - 1, n));

    return 0;
}