Pagini recente » Cod sursa (job #766865) | Cod sursa (job #3272104) | Cod sursa (job #1125374) | Cod sursa (job #2933994) | Cod sursa (job #2898421)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
const int modulo = 1999999973;
long long n, e;
long long lgput(long long x, long long y)
{
long p = 1;
/*
2 5
5 = 4 + 1 => 101
pas 1:
y = 5 / 2 = 2 rest 1 -> puterea actuala conteaza la rezultat, deci facem rezultat = rezultat * putere actuala
x = 2;
puterea actuala merge la urmatorul exponent: x = x * x
pas 2:
y = 2 / 2 = 1 rest 0 -> puterea actuala nu conteaza la rezultat
x = 4
pas 3:
y = 1 / 2 = 0 rest 1 -> puterea actuala conteaza la rezultat
*/
while(y)
{
if(y % 2 == 1)
{
p = (p * x) % modulo;
}
y = y / 2;
x = (x * x) % modulo;
}
return p%modulo;
}
int main()
{
fin >> n >> e;
fout << lgput(n, e);
return 0;
}
/*
a ^ 35 = a ^ 1 + 2 + 32 = a ^ 1 * a ^ 2 * a ^ 32
*/
/*
35 -> baza 10
*/
/*
a * a * a * * ... * a 35 ori
a * a^ 2 * a^32
*/