Pagini recente » Cod sursa (job #643904) | Cod sursa (job #2792211) | Cod sursa (job #323691) | Cod sursa (job #1354999) | Cod sursa (job #1110454)
#include <fstream>
#include <iostream>
#include <ctime>
#include <cstdlib>
#define MODN 1999999973
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
long long pow(long long a, long long b)
{
long long ret = 1;
while(b--)
{
ret = (ret * a) % MODN;
}
return ret;
}
long long expf(long long a, long long n)
{
if(n < 0)
return expf(1/a, -n);
else if(n == 0)
return 1;
else if(n == 1)
return a;
else if(n%2)
return (a * expf((a*a)%MODN, (n-1)/2)) % MODN;
else
return expf((a*a)%MODN, n/2) % MODN;
}
void brute(int t)
{
srand(time(NULL));
long long res1, res2, x1, x2;
float c1, c2;
c1 = t;
c2 = 0;
while(t--)
{
x1 = rand() % MODN-1;
x2 = rand() % MODN-1;
res1 = pow(x1, x2);
res2 = expf(x1, x2);
cout << res1 << ":" << res2 << '\n';
if(res1 == res2)
++c2;
}
cout << c2/c1 * 100 << "%";
}
int main ()
{
long long x, y;
f >> x >> y;
//brute(5);
g << expf(x, y);
}