Cod sursa(job #146445)
Utilizator | Sima Cotizo sima_cotizo | Data | 1 martie 2008 18:40:18 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.41 kb |
#include <cstdio>
#define MOD 1999999973
long lgput(long a, long b) {
if ( b==0 ) return 1;
if ( b==1 ) return a;
if ( (b&1)==0 )
return ((long long)lgput(a, b/2)*lgput(a, b/2)) % MOD;
return (((long long)lgput(a, (b-1)/2)*lgput(a, (b-1)/2)) % MOD * a) % MOD;
}
int main() {
long a,b;
fscanf(fopen("lgput.in", "r"), "%ld %ld", &a, &b);
fprintf(fopen("lgput.out", "w"), "%ld\n", lgput(a,b));
return 0;
}