Cod sursa(job #1749695)
Utilizator | Meriniuc Razvan- Dumitru meriniucr | Data | 28 august 2016 16:07:17 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.41 kb |
#include <bits/stdc++.h>
using ll = long long;
ll
go(ll n,
ll p)
{
if (1 == p)
{
return n;
}
if (2 == p)
{
return (n * n) % 1999999973;
}
if (p & 1)
{
return n * (go(go(n, p / 2), 2)) % 1999999973;
}
return go(go(n, p / 2), 2) % 1999999973;
}
int main()
{
ll n;
ll p;
std::cin >> n >> p;
std::cout << go(n, p);
return 0;
}