计算an%ba ^ n \% ban%b其中a,b和n都是32位的非负整数。
样例
例如 231 % 3 = 2
例如 1001000 % 1000 = 0
挑战
O(logn)
long long fastPower2(int a, int b, int n)
{
if (n == 0)
{
return 1 % b;
}
if (n == 1)
{
return a % b;
}
if (n % 2 == 0)
{
n = n / 2;
long long i = fastPower2(a, b, n);
long long j = i * i % b;
return j;
}
else
{
n = (n - 1) / 2;
long long i = fastPower2(a, b, n);
long long j = i * i % b *a %b ;
return j;
}
}
int fastPower(int a, int b, int n)
{
long long ret = fastPower2(a, b, n);
return (int)ret;
}