Cod sursa(job #854957)
Utilizator | Data | 14 ianuarie 2013 13:51:31 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.38 kb |
#include <stdio.h>
#include <string.h>
int main()
{
FILE*f,*g;
f=fopen("lgput.in","r");
g=fopen("lgput.out","w");
int N, P,m = 1999999973;
long long a, rez= 1;
fscanf(f,"%d %d", &N, &P);
a=N;;
for (int i=0; (1<<i)<=P; ++ i)
{
if ( ((1<<i) & P) > 0) rez=(rez*a)%m;
a=(a*a)%m;
}
fprintf(g,"%lld\n",rez);
}