Cod sursa(job #2104183)
| Utilizator | Data | 11 ianuarie 2018 12:39:30 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | arhivacre | Marime | 0.5 kb |
/// ridicare la putere in timp logaritmic
#include <iostream>
#include <fstream>
#include <algorithm>
#include <utility>
#define m 1999999973
///#define f cin
///#define g cout
using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
long long n, p;
int main()
{
f >> n >> p;
long long a = n, ans = 1;
for(int i = 0; (1<<i) <= p; ++i)
{
if(((1<<i) & p) > 0) ans = (ans * a) % m;
a = (a * a) % m;
}
g << ans << '\n';
return 0;
}
