Cod sursa(job #401558)
| Utilizator | Data | 22 februarie 2010 22:20:54 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include <stdio.h>
#define MOD 1999999973
long long int x, rezultat = 1, n;
int main(){
FILE * f = fopen ("lgput.in", "r");
FILE * g = fopen ("lgput.out", "w");
fscanf (f, "%lld %lld", &x, &n);
while (n){
if (n % 2 == 0){
x *= x;
n /= 2;
}
else{
rezultat *= x;
n--;
x *= x;
n /= 2;
}
x %= MOD;
rezultat %= MOD;
}
fprintf(g, "%lld", rezultat);
fclose(f);
fclose(g);
return 0;
}