Cod sursa(job #2258873)

Utilizator S_DanSochirca Dan S_Dan Data 12 octombrie 2018 12:24:53
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include <bits/stdc++.h>
using namespace std;
unsigned long long 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 long long n,unsigned long long p){
     if (p==0) return 1;
        if (p==1) return n%k;
            else if(p%2==0) return putere(((n%k)*(n%k))%k,p/2);
                else return (putere(((n%k)*(n%k))%k,p/2)*n%k)%k;
}

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