Cod sursa(job #2834304)

Utilizator db_123Balaban David db_123 Data 16 ianuarie 2022 20:16:27
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>

using namespace std;

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

int b,n,p;
int moduloP=1;

void read(){
    cin>>b>>n;
    //>>p;
    moduloP=1999999973;
//    while(p>0){
//        moduloP*=10;
//        p--;
//    }
}

long calculate(int base,int exp){
    ///base cond
    if(exp==1){
        return base;
    }

    int res= calculate(base,exp/2);
    ///recursive function
    if((1&exp)){
        return (res%moduloP)*((res%moduloP)*(res%moduloP))*base;
    }
    else{
        return (res%moduloP)*(res%moduloP);
    }
}

void solve(){
    int number=1;
    while(n>1){
        if(n%2==1){
            number*=b;
            n--;
        }
        else{
            b*=2;
            n/=2;
        }
    }
    cout<<number*b;
}

int main() {
    read();
    cout<<calculate(b,n)%moduloP;
//    solve();
    return 0;
}