Cod sursa(job #1012095)

Utilizator BuseSorinFMI Buse Sorin-Marian BuseSorin Data 18 octombrie 2013 01:30:18
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <iostream>
#include <fstream>
using namespace std;

long ridicaLaPutere(int n,int p){
    if(n<0){
        ridicaLaPutere(1/n,-p);
    }else if(p==0){
        return 1;
    }else if(p==1){
        return n;
    }else if(n%2!=0){
        return n*ridicaLaPutere(n*n,(p-1)/2);
    }else if(n%2==0){
        return ridicaLaPutere(n*n,p/2);
    }

}

int main()
{
    fstream f("lgput.in");
    int n=0,p=0;
    f>>n>>p;
    ofstream o("lgput.out");
    o<<(ridicaLaPutere(n,p)%1999999973)<<endl;
    return 0;
}