Cod sursa(job #1891766)
Utilizator | Petru G petroo | Data | 24 februarie 2017 12:09:22 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.46 kb |
#include <stdio.h>
long long modulo = 1999999973;
unsigned long long solve(long long x,long long n)
{
if (n == 1)
return x % modulo;
if (n % 2 == 0) return solve((x * x), n/2);
if (n % 2 != 0) return (x * solve((x * x) % modulo,(n-1)/2));
}
int main()
{
unsigned long long x, n;
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%d %d", &x, &n);
printf("%lld",solve(x,n) % modulo);
return 0;
}