Cod sursa(job #2640705)

Utilizator richardionelRichard Ionel richardionel Data 7 august 2020 16:13:37
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.54 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 % MOD) / 2) % MOD;
    else
        return (n % MOD) * ridicare(((numar % MOD) * (numar % MOD)),((putere - 1) % MOD) / 2) % MOD;
;}

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