Cod sursa(job #2640706)

Utilizator richardionelRichard Ionel richardionel Data 7 august 2020 16:14:34
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.53 kb
#include <bits/stdc++.h>
using namespace std;

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

#define ll long long
const ll MOD = 1999999973;
ll n,p;

ll ridicare(ll numar, ll putere)
{
    if(putere == 1)
        return numar;
    if(putere == 0)
        return 1;

    if(putere % 2 == 0)
        return ridicare((numar % MOD) * (numar % MOD),putere/ 2) % MOD;
    else
        return (n % MOD) * ridicare(((numar % MOD) * (numar % MOD)),(putere - 1) / 2) % MOD;
;}

int main()
{
    fin >> n >> p;
    fout << ridicare(n,p);
}