Pagini recente » Cod sursa (job #2412927) | Diferente pentru problema/arcas intre reviziile 3 si 2 | Cod sursa (job #1768007) | Cod sursa (job #1455341) | Cod sursa (job #1093580)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
long long n, p, sol = 1;
const int modulo = 1999999973;
int main()
{
fin >> n >> p;
for (int i = 0; (1<<i) <= p; ++i) // parcurge bitii
{
if ( (1 << i) & p ) // daca ambii biti sunt 1
sol = (sol * n) % modulo; // solutia se inmulteste cu n
n = ( n * n ) % modulo; // n ridicat la patrat
}
fout << sol << '\n';
fin.close();
fout.close();
return 0;
}