Cod sursa(job #2333544)

Utilizator Leonard123Mirt Leonard Leonard123 Data 1 februarie 2019 13:35:36
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");


int putere(int a, int b, int c){
    int a1=a, r, i;
    int v[100000];
    v[0]=b;
    if(b==0){
        return 1;
    }

    for(i=1; b!=1; i++){
        if(b%2==0){
            b/=2;
            v[i]=b;
            }
        else {
            b-=1;
            v[i]=b;
        }
    }
    i-=2;
    while(i>=0){
        if(v[i]%2!=0){
            a*=a1;
        }else{
            a*=a;
        }
          a%=c;
        i--;
    }
    r=a%c;
    return r;
}
int main(){
    int a,b,c=1999999973;
    fin>>a>>b;
    fout<<putere(a,b,c);
    return 0;
}