Pagini recente » Cod sursa (job #1956310) | Cod sursa (job #1140492) | Cod sursa (job #70035) | Cod sursa (job #3271332) | Cod sursa (job #1349905)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
#define LIMIT 1999999973
long long int fast_exp(unsigned int base, unsigned int exp)
{
if(exp==1)
return base;
else
{
if(exp%2 == 0)
{
long long int base1 = pow(fast_exp(base, exp/2),2);
if(base1 >= LIMIT)
return base1%LIMIT;
else
return base1;
}
else
{
long long int ans = (base* pow(fast_exp(base,(exp-1)/2),2));
if(ans >= LIMIT)
return ans%LIMIT;
else
return ans;
}
}
}
long long put(long long int x, long long int y)
{
if(y==0) return 1;
if(y==1) return x;
if(y%2==0) return put(x*x,y/2);
return x*put(x*x,(y-1)/2);
}
int main()
{
ifstream in("lgput.in");
ofstream out("lgput.out");
unsigned int x, y;
in >> x >> y;
out << fast_exp(x,y) << '\n';
return 0;
}