Cod sursa(job #2021626)
| Utilizator | Data | 14 septembrie 2017 08:31:32 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <bits/stdc++.h>
#define MOD 1999999973
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
int64_t n,p;
int64_t expFast(int64_t b, int64_t x) {
if(x==0) return 1;
if(x==1) return b;
else if(x%2 == 0) {
b = b*b % MOD;
x = x/2 % MOD;
return expFast(b, x) % MOD;
} else {
int64_t t = b % MOD;
b = b*b % MOD;
x = (x-1)/2 % MOD;
return t*expFast(b, x) % MOD;
}
}
int main()
{
fin>>n>>p;
fout<<expFast(n, p);
return 0;
}
