
用c语言求解x的y次方,有没有人会的帮忙解答一下?希望有注释解释一下
实现逻辑,遍历每个数组元素,从后往前开始遍历,遍历时,计算当前数组元素对应的次数,进行求幂运算。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int powerMod(int x, int* y, int len, int mod) {
int result = 1;
// 从数组后面开始访问(低位到高位)
for (int i = len - 1; i >= 0; i--) {
// 根据数组 y 的每个元素值进行幂运算
for (int j = 0; j < y[i] * pow(10,len - i -1); j++) {
result = (result * x) % mod;
}
}
return result;
}
int main() {
int x;
char y_str[2000];
int y[2000];
scanf("x=%d,y=[%[^]]", &x, y_str);
// 解析数组 y
char* token = strtok(y_str, ",");
int len = 0;
while (token != NULL) {
// 将字符串转换为整数,并存储在数组中
y[len++] = atoi(token);
token = strtok(NULL, ",");
}
int result = powerMod(x, y, len, 10007);
printf("%d\n", result);
return 0;
}