Pagini recente » Cod sursa (job #1231825) | Cod sursa (job #1692585) | Cod sursa (job #627462) | Cod sursa (job #1943597) | Cod sursa (job #2700379)
#include <bits/stdc++.h>
#define MOD 1999999973
#define int long long
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
int n;
int v[300300];
int factorial[300300];
void precalc()
{
factorial[0] = 1;
for(int i = 1; i <= 300000; i ++)
{
factorial[i] = factorial[i-1] * i;
factorial[i] %= MOD;
}
}
int lgput(int base, int exp)
{
int ans = 1, aux = base;
for(int i = 1; i <= exp; i *= 2)
{
if(i & exp)
{
ans = ans * aux;
ans %= MOD;
}
aux = aux * aux;
aux %= MOD;
}
return ans;
}
int combinari(int nn, int kk)
{
if(nn <= kk)
{
int N = nn + kk - 1;
int K = nn;
return (((factorial[N] * lgput(factorial[K], MOD - 2)) % MOD) * lgput(factorial[N-K], MOD - 2)) % MOD;
}
else
return (((factorial[nn] * lgput(factorial[kk], MOD - 2)) % MOD) * lgput(factorial[nn-kk], MOD - 2)) % MOD;
}
int32_t main()
{
bool ok = false;
int m;
fin >> n >> m;
fout << lgput(n,m);
return 0;
/*
for(int i = 1; i <= n; i ++)
{
cin >> v[i];
if(v[i] < 0)
ok = true;
}
if(ok == true)
return 0;
precalc();
int i = 1, first = 0, last = 0, ans = 1;
while(i <= n)
{
while(v[i] > 0 && i <= n)
i++;
if(i > n)
break;
int poz = i;
first = v[i-1];
while(v[i] == 0)
i++;
last = v[i];
int poz2 = i;
ans *= combinari(last - first + 1, poz2 - poz);
ans %= MOD;
}
cout << ans << '\n';
*/
}