Cod sursa(job #1726307)

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

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

int ridicare(int a, int b){
    
    if(b<0) return(1/a,-b);
    else if(b==0) return 1;
    else if(b==1) return a;
    else if (b%2 == 0) return ridicare((a*a)%Q,b/2);
    else return (a%Q)* ridicare((a*a)%Q,(b-1)/2);
}
int main() {
    int a,b;
    cin>>a>>b;
    cout<<ridicare(a,b);
}