Cod sursa(job #1511687)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 27 octombrie 2015 00:50:20
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 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)%MOD;
        }
        else
        {
            B >>=1;
            X1 = (X1 * X1)%MOD;
        }
    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;
}