c语言利用二进制算法给定整数x和n,求x的n次幂 mod 1003 Input 整数x和n。 1<=x,n<=1,000,000,0000 Output x^n mod 1003 Sample Input 2 10 Sample Output 21
时间: 2024-10-17 16:10:30 浏览: 36
C语言中计算大整数幂并取模1003通常会采用快速幂(Fast Exponentiation)算法,也叫Modular Exponentiation。这个算法的核心思想是将指数分解成二进制表示,然后通过递归的方式逐层计算。以下是简单的步骤:
1. 定义两个变量:`result`初始化为x,`base`初始化为1。
2. 使用循环遍历n的二进制形式,从最低位开始。如果当前二进制位为1,则更新`base`为`base * x` mod 1003。
3. 然后将`base`自乘一次,即`base = base * base` mod 1003。
4. 循环结束后,`result`就是x^n mod 1003。
下面是一个简化的C语言函数示例:
```c
#include <stdio.h>
long long fastPower(long long x, int n, int mod) {
if (n == 0) return 1;
long long half = fastPower(x, n / 2, mod);
long long result = (half * half) % mod;
if (n % 2 == 1) {
result = (result * x) % mod;
}
return result;
}
int main() {
long long x, n;
scanf("%lld %d", &x, &n);
long long ans = fastPower(x, n, 1003);
printf("%lld\n", ans);
阅读全文