当前位置: 代码迷 >> 综合 >> 140. 快速幂
  详细解决方案

140. 快速幂

热度:1   发布时间:2024-03-07 12:43:30.0

计算an%ba ^ n \% ba?n??%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;
}

 

  相关解决方案