Pagini recente » Cod sursa (job #2289863) | Cod sursa (job #658186) | Cod sursa (job #15075) | Cod sursa (job #2880472) | Cod sursa (job #2227831)
#include <iostream>
#include <fstream>
using namespace std;
long long pow(unsigned int n, unsigned int p)
{
unsigned int mod = 1999999973;
if (p == 0)
return 1;
if (n == 0)
return 0;
if (n == 1)
return 1;
int logP = 0;
unsigned int pp = p;
while (pp >>= 1)
{
++logP;
}
long long k[33];
k[0] = n % mod;
for (int i = 1; i <= logP; ++i)
k[i] = (k[i - 1] * k[i - 1]) % mod;
long long x = 1;
int i = 0;
do
{
if (p & 1)
{
x *= k[i];
x = x % mod;
}
++i;
} while (p >>= 1);
return x % mod;
}
int main()
{
ifstream in("lgput.in");
ofstream out("lgput.out");
unsigned int n, p;
in >> n >> p;
long long x = pow(n, p);
out << x << "\n";
return 0;
}