Cod sursa(job #192872)
| Utilizator | Data | 31 mai 2008 22:59:32 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <stdio.h>
#include <stdlib.h>
int lgpow (int base, int exp)
{
int ret = 1;
while (exp) {
if (exp & 1) {
--exp;
ret *= base;
}
base *= base;
exp /= 2;
}
return ret;
}
int main (void)
{
FILE *in, *out;
int base, exp;
in = fopen("lgput.in", "r");
out = fopen("lgput.out", "w+");
if (!in || !out) { printf("WTF?"); exit(-1); }
fscanf(in, "%d %d", &base, &exp);
fprintf(out, "%d\n", lgpow(base, exp)%1999999973);
fclose(in); fclose(out);
}