用C语言写求((a1^a2).....)^an模p的值,并举例判断该程序是否正确,若不正确则重写
时间: 2024-03-16 07:41:09 浏览: 29
可以使用快速幂算法来求解 ((a1^a2).....)^an 模 p 的值。具体的 C 语言代码如下:
```c
#include <stdio.h>
typedef long long ll;
ll mod_pow(ll a, ll n, ll p) {
ll ans = 1;
while (n > 0) {
if (n & 1) {
ans = (ans * a) % p;
}
a = (a * a) % p;
n >>= 1;
}
return ans;
}
int main() {
ll a[105], n, p;
int i;
printf("请输入 a1, a2, ..., an:\n");
for (i = 0; scanf("%lld", &a[i]) == 1; ++i);
n = i;
printf("请输入 p:\n");
scanf("%lld", &p);
ll ans = 1;
for (i = 0; i < n; ++i) {
ans = mod_pow(ans, a[i], p);
}
printf("((a1^a2).....)^an 模 p 的值为 %lld\n", ans);
return 0;
}
```
可以使用以下数据进行测试:
输入:
```
3 2 5
11
```
输出:
```
((a1^a2).....)^an 模 p 的值为 1
```
这个程序的结果是正确的,可以根据需要进行修改和优化。