Cod sursa(job #2120454)
Utilizator | Mihalcea Tudor mihitudor | Data | 2 februarie 2018 14:47:54 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <iostream>
#include <stdio.h>
long long ridicare (long long baza, long long exp) {
long long rez=1;
while(exp!=0) {
if(exp%2==0) {
baza=baza*baza;
baza=baza%1999999973;
exp=exp/2;
}
else {
rez=rez*baza;
rez=rez%1999999973;
exp--;
}
}
return rez;
}
int main () {
long long baza, exp;
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
scanf("%lld%lld", &baza, &exp);
printf("%lld", ridicare(baza, exp));
return 0;
}