Cod sursa(job #1459147)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 9 iulie 2015 11:23:08
Problema Invers modular Scor 60
Compilator c Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#include <stdlib.h>

const char iname[] = "inversmodular.in";
const char oname[] = "inversmodular.out";



int main()
{
    FILE *in = fopen(iname, "r");
    FILE *out = fopen(oname, "w");
    long long int r, a;
    int n, p, mod;
    fscanf(in, "%d %d ", &n, &mod);
    p = mod - 2;
    r = 1;
    a = n;

    while(p > 1)
    {
        if(1 & p)
        {
            r = (r * a)%mod;
            a = (a * a)%mod;
            p = (p-1)/2;
        }
        else
        {
            a = (a * a)%mod;
            p = p / 2;
        }
    }

    r = (r*a)%mod;
    fprintf(out, "%lld", r);

    return 0;
}