Pagini recente » Cod sursa (job #1197624) | Cod sursa (job #3271556) | Cod sursa (job #346919) | Cod sursa (job #2968595) | Cod sursa (job #1183728)
#include <stdio.h>
const int MOD = 1999999973;
unsigned long long exp_bit(int N, int P)
{
unsigned long long a = N, ret = 1;
unsigned i;
for (i = 0; (1 << i) <= P; ++i) {
if (((1 << i) & P) > 0)
ret = (ret * a) % MOD;
a = (a * a) % MOD;
}
return ret;
}
unsigned long long exp_recursive(int N, int P)
{
if (!P)
return 1;
if (P == 1)
return N;
if (P % 2)
return (N * exp_recursive(N*N, (P - 1)/2)) % MOD;
else
return exp_recursive(N*N, P/2) % MOD;
}
int main()
{
FILE *fin = fopen("lgput.in", "r");
FILE *fout = fopen("lgput.out", "w");
unsigned int N, P;
fscanf(fin, "%d %d", &N, &P);
fprintf(fout, "%lld", exp_bit(N, P));
fclose(fin);
fclose(fout);
return 0;
}