Cod sursa(job #1942009)
Utilizator | Data | 27 martie 2017 19:00:01 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.47 kb |
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("lgput.in");
ofstream out("lgput.out");
int perm(long long n, long long p) {
long long num = 1999999973;
long long y = 1;
if (p == 0)
return 1;
while (p > 1) {
if (p % 2 == 0) {
n *= n;
p /= 2;
}
else {
y *= n;
n *= n;
p = (p - 1) / 2;
}
}
n *= y;
return (n%num);
}
int main()
{
long long n,p;
in >> n;
in >> p;
out << perm(n, p);
return 0;
}