Cod sursa(job #256128)
Utilizator | Data | 11 februarie 2009 10:04:39 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.35 kb |
#include <iostream>
using namespace std;
#define M 1999999973
int main ()
{
freopen ("lgput.in","r",stdin);
freopen ("lgput.out","w",stdout);
long long N,P;
cin>>N>>P;
long long sol=1,tmp=N;
for (long long i=0; P >= (1<<i); ++i)
{
if ((1<<i) & P) sol= (sol*tmp) % M;
tmp=(tmp*tmp) % M;
}
cout<<sol;
return 0;
}