Cod sursa(job #226590)

Utilizator filipbFilip Cristian Buruiana filipb Data 2 decembrie 2008 00:37:38
Problema Invers modular Scor Ascuns
Compilator cpp Status done
Runda Marime 0.51 kb
#include <stdio.h>
#include <assert.h>

#define ll long long

int N, P;

int put(int a, int b)
{
    if (!b)
       return 1;
    int x = put(a, b/2);
    x = ((ll)x*x) % P;
    if (b & 1)
       x = ((ll)x * a) % P;
    return x;
}

int main()
{
    freopen("inversmodular.in", "r", stdin);
    freopen("inversmodular.out", "w", stdout);
  
    scanf("%d %d", &N, &P);
    assert(1 <= P && P <= 2000000000);
    assert(1 <= N && N < P);
    printf("%d\n", put(N, P-2));
    
    return 0;
}