Cod sursa(job #2170060)
| Utilizator | Data | 14 martie 2018 22:13:38 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <fstream>
#define MOD 1999999973
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
long long n,p;
long long lgput(long long a, long long k) {
long long m=1;
long long n=a;
while(k>1) {
if (k%2==0) {
n=((n%MOD) * (n%MOD))%MOD;
k=k/2;
}
else {
m=((m%MOD) * (a%MOD))%MOD;
--k;
}
}
return ((m%MOD) * (n%MOD))%MOD;
}
int main() {
f>>n>>p;
g<<lgput(n,p);
f.close(); g.close();
return 0;
}
