Pagini recente » Cod sursa (job #3162471) | Cod sursa (job #3293121) | Cod sursa (job #239883) | Cod sursa (job #143316) | Cod sursa (job #226590)
Cod sursa(job #226590)
#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;
}