Pagini recente » Cod sursa (job #993816) | Cod sursa (job #2218942) | Cod sursa (job #2473843) | Cod sursa (job #1260543) | Cod sursa (job #2272214)
#include <stdio.h>
#include <stdint.h>
#define MOD 1999999973
uint64_t multiply(uint64_t a, uint64_t b, uint64_t mod)
{
uint64_t res = 0;
a = a % mod;
while (b > 0)
{
if (b % 2 == 1)
res = (res % mod + a % mod) % mod;
a = (a * 2) % mod;
b /= 2;
}
return res % mod;
}
int fast_exp(uint64_t n, uint64_t p)
{
uint64_t r = 1;
for (int i=31;i>=0;i--) {
if ((p>>i)%2==1)
{
r = multiply(r,n,MOD);
}
if (i!=0)
r = multiply(r,r,MOD);
}
return r;
}
int main()
{
FILE *inptr = fopen("logput.in","r");
FILE *outptr = fopen("logput.out","w");
uint64_t n,p;
int a;
fscanf(inptr,"%d %d", &n, &a);
p = a;
fprintf(outptr,"%lld", fast_exp(n,p));
return 0;
}