Cod sursa(job #2237978)
Utilizator | The Doctor radu.leonardo | Data | 4 septembrie 2018 02:23:08 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include <fstream>
using namespace std;
const uint32_t kMod=1999999973;
template<class T>
T fast_pow(T base,T power) {
T result=1;
while(power) {
if(power%2)
result=(result*base)%kMod;
power=power/2;
base=(base*base)%kMod;
}
return result;
}
int main() {
ifstream fin("lgput.in");
ofstream fout("lgput.out");
uint32_t base,power;
fin>>base>>power;
fout<<fast_pow<uint32_t>(base,power);
return 0;
}