c语言快速幂大数取模
时间: 2023-12-02 18:40:57 浏览: 251
快速幂取模 c/c++
4星 · 用户满意度95%
C语言快速幂大数取模是一种常见的算法,可以快速求一个幂式的模(余)。下面是一个示例代码:
```c
#include <stdio.h>
long long quick_pow_mod(long long a, long long b, long long m) {
long long ans = 1 % m;
while (b > 0) {
if (b & 1) {
ans = ans * a % m;
}
a = a * a % m;
b >>= 1;
}
return ans;
}
int main() {
long long a = 2, b = 10, m = 1000000007;
printf("%lld\n", quick_pow_mod(a, b, m)); // 输出:1024
return 0;
}
```
上述代码中,`quick_pow_mod`函数用于计算快速幂取模,其中`a`表示底数,`b`表示指数,`m`表示模数。函数返回值为`a^b mod m`的结果。
在函数中,我们使用了位运算来进行快速幂运算,同时使用了取模运算来避免数据溢出。具体来说,我们将指数`b`转化为二进制数,然后从低位到高位依次计算,如果当前位为1,则将结果乘上底数`a`,否则不做处理。每次计算完后,将底数`a`平方,指数`b`右移一位,继续进行下一次计算,直到指数`b`为0。
如果需要计算多个幂式的模(余),可以在`main`函数中多次调用`quick_pow_mod`函数。
阅读全文