Cod sursa(job #1511686)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 27 octombrie 2015 00:49:26
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <bits/stdc++.h>
#define MOD 1999999973
using namespace std;

long long lgput(long long A,long long B)
{
    long long X1 = A, X2 = 1;
    if(B == 0) return 1;
    if(B == 1) return A % MOD;
    while(B)
        if(B&1){
            B^= 1;
            X2 = X1 * X2;
        }
        else
        {
            B >>=1;
            X1 = X1 * X1;
        }
    return X2;
}

int main()
{
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);

    long long A,B;
    scanf("%lld%lld",&A,&B);
    printf("%lld\n",lgput(A,B));

    return 0;
}