Cod sursa(job #146418)
Utilizator | Data | 1 martie 2008 18:03:43 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.45 kb |
#include <stdio.h>
const int numar=1999999973;
int n,p;
int putere_2 ( int n, int e ) {
int r = n;
for (int i = 1; i <= e; ++i)
r = ((long long)r*r)%numar;
return r;
}
int main()
{
int rez = 1;
freopen("lgput.in","rt",stdin);
freopen("lgput.out","wt",stdout);
scanf("%d %d",&n,&p);
for (int bit = 0; p > 0; p /= 2, ++bit)
{
if (p % 2 == 1)
{
rez = ((long long)rez * putere_2(n,bit))%numar;
}
}
printf("%d\n",rez);
return 0;
}