Cod sursa(job #504563)
Utilizator | Radu Bucur radu_bucur | Data | 28 noiembrie 2010 08:40:03 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.45 kb |
#include <stdio.h>
int m, n, p, i;
long long s;
int main(){
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf ("%d%d",&n,&p);
s=1; m = 1999999973;
for (i = 0; (1<<i) <= p; ++ i) {
if ( ((1<<i) & p) > 0) s= (s * n) % m;
n=(n* n) % m; }
/* for (i=0;(1<<i)<=p;i++){
if ( ((1<<i) & p)>0) s= (s*n)%m;
n=(n*n)%m; } */
printf ("%lld",s);
return (0);}