Cod sursa(job #2772132)

Utilizator GligarEsterabadeyan Hadi Gligar Data 30 august 2021 20:33:59
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

const int nmax=100, n2max=32, mod=1999999973;

typedef long long int64;

int64 v[nmax+1];

int u[n2max+1];

int main(){
    int64 n,m;
    fin>>n>>m;
    n%=mod;
    v[1]=n;
    for(int64 i=1,j=2;i<=m;i*=2,j++){
        n=n*n%mod;
        v[j]=n;
    }
    int p=0;
    while(m>0){
        p++;
        int m2=1,m3=0;
        while(m2*2<=m){
            m2*=2;
            m3++;
        }
        m-=m2;
        u[p]=m3+1;
    }
    int64 sum=0;
    for(int i=1;i<=p;i++){
        sum+=v[u[i]];
        sum%=mod;
    }
    fout<<sum<<"\n";
}