Cod sursa(job #147509)
Utilizator | Data | 3 martie 2008 01:52:44 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.64 kb |
#include <iostream>
#define CONST 1999999973
#define FIN "lgput.in"
#define FOUT "lgput.out"
using namespace std;
int n,p;
void iofile(void){
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d%d",&n,&p);
fclose(stdin);
}
void solve(void){
int rest=n%CONST;
int pw;
for (pw=1;2*pw<=p;pw*=2){
rest=(rest*rest)%CONST;
}
for (int i=pw+1;i<=p;i++){
rest=(rest*n)%CONST;
}
printf("%d\n",rest);
fclose(stdout);
}
int main(void){
iofile();
solve();
return 0;
}