Cod sursa(job #2909306)

Utilizator Cala_cc09Christian Cala Cala_cc09 Data 12 iunie 2022 16:07:43
Problema Invers modular Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

int exp(int x, int n)
{
    if(n<0)
        return exp(1.0/x, -n);
    if(n==0)
        return 1;
    if(n%2==0)
        return exp(x*x, n/2);
    if(n%2==1)
        return x*exp(x*x, n/2);
}

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

int main()
{
    FILE *fin=fopen("inversmodular.in", "r");
    FILE *fout=fopen("inversmodular.out", "w");
    int A, N;
    fscanf(fin,"%d %d", &A, &N);
    fprintf(fout,"%d", exp(A, phi(N)-1)%N);
}