Cod sursa(job #1753216)

Utilizator alexandrionUNIBUC Marcu Alexandru alexandrion Data 6 septembrie 2016 10:05:17
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>

using namespace std;

#define module 1999999973

long long lgput (int a , int b){

    if(b==0)
        return 1;
    if(b==1)
        return a;
    if(b%2==0)
        return (lgput(a,b/2)*lgput(a,b/2))%module ;
    else
        return (lgput(a,b/2)*lgput(a,b/2)*a)%module;
}

long long lgputIterativ(int a , int b){

    long long  p= 1 ;
    while(b!=0){
        if (b%2!=0){
            p = (p*a)%module;
            b--;
        }
        a = (a*a)%module;
        b=b/2;
    }

    return p ;


}

int main()
{
    int a , b ;
    cin>>a>>b;
    cout<<lgputIterativ(a,b)%module;
    return 0;
}