Cod sursa(job #2333526)

Utilizator Leonard123Mirt Leonard Leonard123 Data 1 februarie 2019 13:20:16
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 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;
        }
        if(a>1999999973)
          a%=c;
        i--;
    }
    r=a%c;

}
int main(){
    int a,b,c=1999999973;
    fin>>a>>b;
    fout<<putere(a,b,c);
    return 0;
}