Cod sursa(job #396622)
Utilizator | Vicol Sergiu Constantin Ergo | Data | 15 februarie 2010 17:46:34 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.53 kb |
#include <fstream>
#define BIG 1999999973
using namespace std;
long long N, P, sol = 1;
void Citire(void)
{
ifstream fin("lgput.in");
fin >>N >>P;
fin.close();
}
void Rezolva(void)
{
long long i, Pow = N;
for (i = 1; i <= P; i = (i << 1))
{
if (i & P)
sol = (sol * Pow) % BIG;
Pow = (Pow * Pow) % BIG;
}
}
void Afiseaza(void)
{
ofstream fout("lgput.out");
fout <<sol;
fout.close();
}
int main()
{
Citire();
Rezolva();
Afiseaza();
return 0;
}