Cod sursa(job #2779639)
Utilizator | Data | 4 octombrie 2021 15:56:01 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 40 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.45 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
const int m = 1999999973;
long long n;
unsigned int p_actual, p, baza;
int main(){
long long p_actual = 1, baza;
fin >> n >> p;
baza = n;
while( (p_actual << 1) <= p){
n = (n*n) % m;
p_actual = (p_actual << 1);
}
for(int i=1; i<=p-p_actual; i++) n = (n*baza) % m ;
fout << n;
return 0;
}