Cod sursa(job #1726316)

Utilizator TiiberiuBujor Tiberiu-Cosmin Tiiberiu Data 7 iulie 2016 19:18:42
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
#define Q 1999999973
using namespace std;

ifstream cin("lgput.in");
ofstream cout("lgput.out");

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

int main() {
    long long a,b;
    cin>>a>>b;
    cout<<(ridicare(a,b)%Q);
}