Mai intai trebuie sa te autentifici.
Cod sursa(job #2760456)
Utilizator | Data | 26 iunie 2021 15:30:29 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.69 kb |
#include <iostream>
#include <stdio.h>
using namespace std;
const long long M = 1999999973; // 1073741824
long long modmult(long long x, long long y){
return ((x % M) * (y % M)) % M;
}
long long putere(long long a, long long exp){ // (a^exp)%M
long long m = 1;
long long ai = a, afin = 1;
for (int i=0; i<34; i++)
{
if (exp & m)
afin = modmult(ai, afin);
ai = modmult(ai, ai);
m <<= 1;
}
return afin;
}
int main()
{
freopen("lgput.in", "r", stdin);
freopen("lgput.out", "w", stdout);
long long n, p;
scanf("%lld %lld", &n, &p);
printf("%lld\n", putere(n, p));
}
// 2 4