Cod sursa(job #2908213)

Utilizator alexdvResiga Alexandru alexdv 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;
}