Cod sursa(job #2532336)

Utilizator ZarisZaris Neamtiu Zaris Data 27 ianuarie 2020 18:50:50
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
using namespace std;

int ridicare(int n, int P);

int main()
{
    ifstream fin("lgput.in");
    ofstream fout("lgput.out");

    int n, P;

    fin >> n >> P;

    fout << ridicare(n, P);

    fin.close();
    fout.close();

    return 0;
}

int ridicare(int n, int P)
{
    if(n == 0)
        return 1;

    if(n == 1 || P == 0)
        return 1;

    if(P == 1)
        return n;

    if(P % 2 == 0)
        return ridicare(n, P / 2) % 1999999973 * ridicare(n, P / 2) % 1999999973;

    else
        return n * ridicare(n, P / 2) % 1999999973 * ridicare(n, P / 2) % 1999999973;
}