Pagini recente » Cod sursa (job #2420491) | Cod sursa (job #1452774) | Cod sursa (job #11553) | Cod sursa (job #1675750) | Cod sursa (job #282423)
Cod sursa(job #282423)
#include <iostream>
#include <fstream>
using namespace std;
typedef unsigned char byte;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned long long ulonglong;
#define NDEBUG
#ifdef NDEBUG
#define dbg 0 && (*((ostream *) 0))
#else
#define dbg clog
#endif
namespace Math {
long pow(long x, long n)
{
long result = 1;
while ( n ) {
if ( n & 1 ) {
result *= x;
}
x *= x;
n /= 2;
}
return result;
}
ulonglong pow_modulo(ulonglong x, ulonglong n, ulonglong mod) {
ulonglong result = 1;
while(n) {
if(n & 1) {
result = (result * x) % mod;
}
x = (x * x) % mod;
n = n >> 1;
}
return result;
}
}
int main(int argc, char * argv[]) {
const char * inFile = "lgput.in";
const char * outFile = "lgput.out";
ifstream fin(inFile);
ofstream fout(outFile);
#ifndef NDEBUG
if(!fin || !fout) {
cerr << "Error opening one of \"" << inFile << "\" or \"" << outFile << "\"" << endl;
return -1;
}
#endif
const ulong mod = 1999999973;
// Do ya thing
ulong x, n;
fin >> x >> n;
fout << Math::pow_modulo(x, n, mod) << endl;
fout.close();
fin.close();
return 0;
}