Cod sursa(job #2256086)
Utilizator | Zinnenberg Gruhten gruhten | Data | 7 octombrie 2018 22:10:01 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.64 kb |
#include <cstdio>
const int MOD = 1999999973;
int main()
{
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
unsigned int b,p;
long long rez=1, nr=1;
scanf("%d %d", &b, &p);
nr=b;
while(p)
{
if(p&1)
rez=(rez*nr)%MOD;
nr=(nr*nr)%MOD;
p=p/2;
}
//int i;
// for(i=0;p>>i;i++)
// {
// if((p>>i)&1)
// rez=(rez*nr)%MOD;
// nr=(nr*nr)%MOD;
// }
// for(i=0;p>>i;i++)
// {
// if((1<<i)&p)
// rez=(rez*nr)%MOD;
// nr=(nr*nr)%MOD;
// }
printf("%lld\n", rez); //am afisat solutia
}