Cod sursa(job #146402)
Utilizator | Andrei-Bogdan Antonescu andrei-alpha | Data | 1 martie 2008 17:52:16 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.4 kb |
#include <stdio.h>
const int numar=1999999973;
int n,p;
int putere( int n, int e )
{
int r=n;
for (int i=1;i<=e;++i)
r=(r*r)%numar;
return r;
}
int main()
{
int rez=1,bit=0;
freopen("lgput.in", "r" ,stdin);
freopen("lgput.out", "w" ,stdout);
scanf("%d %d", &n,&p);
for (p>0;p/=2,++bit) {
if (p%2==1)
{
rez=(rez*putere(n,bit))%numar;
}
}
printf("%d\n",rez);
return 0;
}