Cod sursa(job #1726319)

Utilizator TiiberiuBujor Tiberiu-Cosmin Tiiberiu Data 7 iulie 2016 19:23:33
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 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 % Q;
        b=-b % Q;}
     if(b == 0) return 1;
    while(b>1){
        if(b%2){
         aux=aux*a% Q;
         a =a*a% Q;
         b =(b-1)/2 % Q;}
        else{
            a= a*a % Q;
            b=b/2% Q;}  
    }
    return a*aux;
     }   
        
    
  

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