Pagini recente » Cod sursa (job #1095615) | Cod sursa (job #2507897) | Cod sursa (job #123409) | Cod sursa (job #445394) | Cod sursa (job #1209453)
#include <stdio.h>
#define M 1999999973
long long slow_exp(long long n, long long p, long long m)
{
if (p == 0)
{
return 1;
}
long long result = n;
long long i;
for (i = 1; i < p; ++i)
{
result = (result * n) % m;
}
return result % m;
}
long long fast_exp(long long n, long long p, long long m)
{
if (p == 0) return 1;
if (p == 1) return n;
if (n % 2 == 0)
{
return fast_exp(n, p/2, m) * fast_exp(n, p/2, m) % m;
}
else
{
return fast_exp(n, p/2, m) * fast_exp(n, p/2, m) * n % m;
}
}
int main()
{
long long N, P;
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%lld %lld", &N, &P);
printf("%lld", fast_exp(N, P, M));
return 0;
}