Cod sursa(job #2908213)
Utilizator | Data | 2 iunie 2022 08:46:10 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 40 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.57 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("lgput.in");
ofstream fout ("lgput.out");
long long a, b, r = 1999999973;
long long putere(long long a, long long b, long long r) {
if (b == 0) {
return 1;
} else if (b == 1) {
return a % r;
} else if (b % 2 == 0) {
return (putere(a % r, b / 2, r) % r * putere(a % r, b / 2, r) % r) % r;
} else if (b % 2 != 0) {
return a * (putere(a % r, b - 1, r) % r);
}
}
int main() {
fin >> a >> b;
fout << putere(a, b, r);
return 0;
}