Pagini recente » Cod sursa (job #2208519) | Cod sursa (job #1892969) | Cod sursa (job #458839) | Cod sursa (job #2302891) | Cod sursa (job #282372)
Cod sursa(job #282372)
#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;
}
ulong pow_modulo(ulong x, ulong n, ulong mod) {
ulong result = 1;
while ( n ) {
if ( n & 1 ) {
result *= x;
result %= mod;
}
x *= x;
n /= 2;
}
return result;
}
}
int main(int argc, char * argv[]) {
const char * inFile = "";
const char * outFile = "";
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;
}