Cod sursa(job #478556)
Utilizator | Data | 19 august 2010 09:52:01 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include <cstdio>
#include <cstdlib>
#define MODNR 1999999973
FILE *fin=fopen("lgput.in","r");
FILE *fout=fopen("lgput.out","w");
long long put(long long a, long long b)
{
long long p=1;
for (int i=(sizeof(long long)*8-2); i>=0; i--)
{
p=(p*p)%MODNR;
if (b&(((long long)1)<<i))
p=(p*a)%MODNR;
}
return p;
}
int main (int argc, char * const argv[]) {
long long a,b;
fscanf(fin, "%lld %lld", &a, &b);
fprintf(fout, "%lld\n", put(a,b));
fclose(fin);
fclose(fout);
return 0;
}