Cod sursa(job #1841122)

Utilizator Constantin.Dragancea Constantin Constantin. Data 5 ianuarie 2017 12:57:06
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>
using namespace std;

long long n,p,ans;

long long put(long long a,long long b){
    if (b<0){
        a=1/a;
        b=-b;
    }
    if (b==0) return 1;
    long long y=1;
    while (b>1) {
        if (b%2==0){
            a*=a;
            b/=2;
        }
        else{
            y*=a;
            a*=a;
            b=(b-1)/2;
        }
    }
    return a*y;
}

int main(){
    ifstream cin ("lgput.in");
    ofstream cout ("lgput.out");
    cin>>n>>p;
    ans=put(n,p);
    cout<<ans%1999999973;
    return 0;
}