Cod sursa(job #1076794)

Utilizator assa98Andrei Stanciu assa98 Data 10 ianuarie 2014 16:24:46
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <cstdio>
using namespace std;

const long long P=1999999973;

long long exp(long long a,long long e) {
    long long ans=0;
    long long bas=a;
    for(int b=0;(1<<b)<=e;b++) {
        if(e&(1<<b)) {
            ans=(ans+bas)%P;
        }
        bas=((long long)bas*bas)%P;
    }
    return ans;
}

int main() {
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    long long a,b;
    scanf("%lld%lld",&a,&b);
    printf("%lld",exp(a,b));
    return 0;
}