Pagini recente » Cod sursa (job #134773) | Borderou de evaluare (job #2071036) | Cod sursa (job #736929) | Cod sursa (job #1030266) | Cod sursa (job #2028035)
#include <fstream>
#define in "lgput.in"
#define out "lgput.out"
#define mod 1999999973
using namespace std;
ifstream fin(in);
ofstream fout(out);
typedef unsigned long long ull;
inline ull ridlog_rec(ull n,ull p)
{
if(p < 2) return n;
ull R = ridlog_rec(n,p/2);
if(R == 0) R = 1;
if(p%2 == 0)
{
return (R*R)%mod;
}
return (((R*R)%mod)*n)%mod;
}
ull ridlog(ull n,ull p)
{
ull rez = 1;
while(p!=0)
{
if(p%2) rez = (rez*n)%mod;
p = p>>1;
n = (n*n)%mod;
}
return rez;
}
int main()
{
ull n,p;
fin>>n>>p;
fout<<ridlog(n,p);
fin.close(); fout.close();
return 0;
}