Cod sursa(job #2379226)
| Utilizator | Data | 13 martie 2019 09:47:41 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
#define MOD 1999999973
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");
long int N,P,o=0;
long int convertToBinary(long int n) {
if (n / 2 != 0) {
convertToBinary(n / 2);
}
o=o*10+n%2;
return o;
}
long int exponentiere(long int N, long int P ) {
long int y=1;
while(P>1) {
if(P%2==0) {
N=N*N%MOD;
P=P/2;
} else
N=N*N%MOD;
y=N*y%MOD;
P=(P-1)>>1;
}
return (N*y)%MOD;
}
int main() {
cin>>N>>P;
cout<<exponentiere(N,P);
return 0;
}
