问题:求解 a^b % c
算法思想:算法基本同快速求幂运算相同,该算法运用二分的思想。
非递归实现代码:
int PowerMod( int a, int b, int c )
{
int ans = 1;
a = a % m;
while( b > 0 )
{
if ( b & 1 )
ans = ( ans * a ) % c;
b >>= 1;
a = ( a * a ) % c;
}
return ans;
}
递归实现代码:
int PowerMod( int a, int b, int c )
{
int ans = 1;
if ( b == 0 )
return 1;
if ( b == 1 )
return a % c;
ans = PowerMod( a, b>>1, c );
ans = ( ans * ans ) % c;
if ( b & 1)
ans = ( ans * a ) % c;
return ans;
}
算法复杂度: log(b)