Cod sursa(job #2985906)

Utilizator GoofyAhBalea Gabriel GoofyAh Data 27 februarie 2023 12:46:40
Problema Ridicare la putere in timp logaritmic Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;

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

const int r=1999999973;
long long p[33],m_b2[33], l;

void b10_la_b2(unsigned long long a) {
    l=0;
    while (a!=0) {
        m_b2[l]=(a%2);
        a/=2;
        l++;
    }
}

int main()
{
    unsigned long long  n, m;
    unsigned long long putere=1;
    fin >> n >> m;
    p[0]=1;
    p[1]=(n*n)%r;
    b10_la_b2(m);
    for (unsigned long long j=2;j<=l;j++) { ///generare puteri
        p[j]=(p[j-1]%r)*(p[j-1]%r)%r;
    }
    for (int j=0;j<l;j++) {
       if (m_b2[j]==1) putere=(putere*p[j])%r;
    }
    fout << putere;
}