Cod sursa(job #2258867)

Utilizator S_DanSochirca Dan S_Dan Data 12 octombrie 2018 12:15:41
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <bits/stdc++.h>
using namespace std;
unsigned int n,p;
typedef unsigned long long ull;
#define ll long long
ifstream fin("lgput.in");
ofstream fout("lgput.out");
const int k=1999999973;

ull putere(unsigned int n,unsigned int p){
     if (p==0) return 1;
        else if (p==1) return n%k;
            else if(p%2==0) return putere(((n%k)*(n%k))%k,p/2);
                else if(p%2!=0) return putere(((n%k)*(n%k))%k,p/2)*n%k;
}

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