Cod sursa(job #2720816)
| Utilizator | Data | 11 martie 2021 12:10:35 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <iostream>
#include <fstream>
#define prime 1999999973
using namespace std;
ifstream f("lgput.in");
ofstream o("lgput.out");
int main()
{
long long a, b;
f >> a >> b;
bool hadOne = 0;
int c;
long long r = 1;
for (int i = sizeof(b) * 8 - 1; i >= 0; i--)
{
c = (b >> i) & 1;
if (hadOne || c)
{
hadOne = 1;
r = (r * r) % prime;
if (c)
{
r = (r * a) % prime;
}
cout << r << " ";
}
}
o << r % prime;
}