Pagini recente » Istoria paginii utilizator/micneaiulian | Cod sursa (job #201302) | Cod sursa (job #1799372) | Cod sursa (job #1435314) | Cod sursa (job #2456285)
#include <bits/stdc++.h>
#define MOD 1999999973
#define nat long long
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
///a^100 = a^64 * a^32 * a^4;
///100 (10) = 1100100 (2)
/// a
nat lgput1(nat a, nat n)
{
nat p = 1;
while(n)
{
if(n % 2 == 1) p = p * a % MOD;
n /= 2;
a = a * a % MOD;
}
return p;
}
nat lgput2(nat a, nat n)
{
nat p = 1, i = 0;
nat t[32];
t[0] = a;
for(i = 1; i <= 30; i++)
t[i] = t[i - 1] * t[i - 1] % MOD;
i = 0;
while(n)
{
if(n % 2 == 1) p = p * t[i] % MOD;
n /= 2;
i++;
}
return p;
}
int main()
{
nat a , n;
fin >> a >> n;
fout << lgput2(a , n);
return 0;
}