Cod sursa(job #719513)
Utilizator | Patrascoiu Mihai Anteus | Data | 21 martie 2012 20:47:17 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.42 kb |
#include <stdio.h>
#define MOD 1999999973
FILE *f=fopen ("lgput.in", "r");
FILE *g=fopen ("lgput.out", "w");
long long a,b;
long long putere(long long a, int b) {
long long x=a;
int v[40],k=0;
while (b>1)
{
v[++k]=b%2;
b/=2;
}
while (k)
{
a=(a*a)%MOD;
if (v[k])
a=(a*x)%MOD;
k--;
}
return a;
}
int main() {
fscanf (f, "%lld%lld", &a,&b);
fprintf (g, "%lld", putere(a,b));
return 0;
}