Pagini recente » Cod sursa (job #3143011) | Cod sursa (job #3125219) | Cod sursa (job #1461961) | Cod sursa (job #2924621) | Cod sursa (job #1128254)
#include <fstream>
using namespace std;
const unsigned long long MOD = 1999999973;
unsigned long long expBySquaring(unsigned long long x, unsigned long long n) {
if (n == 0) {
return 1;
}
else if (n == 1) {
return x;
}
else if (n % 2 == 0) {
return (expBySquaring(x*x, n/2));
}
else if (n % 2 != 0) {
return (x * expBySquaring(x*x, (n-1)/2));
}
}
unsigned long long modular_pow(unsigned long long base, unsigned long long exponent) {
unsigned long long c = 1;
for (unsigned long long e_prime = 1; e_prime <= exponent; ++e_prime) {
c = (c * base) % MOD;
}
return c;
}
unsigned long long efficient_modular_pow(unsigned long long base, unsigned long long exponent) {
unsigned long long result = 1;
base = base % MOD;
while (exponent > 0) {
if (exponent % 2 == 1) {
result = (result * base) % MOD;
}
exponent = exponent >> 1;
base = (base * base) % MOD;
}
return result;
}
int main(int argc, char *argv[]) {
unsigned long long nr, power;
fstream in("lgput.in", ios::in);
in >> nr >> power;
in.close();
fstream out("lgput.out", ios::out);
out << efficient_modular_pow(nr, power);
out.close();
return 0;
}