这么丑陋的代码一次性过了
#include <cstdio>
#include <map>
#include <cmath>
using namespace std;
class operation {
private:
int limit; // 最高的次数
map<int, int> mp; // 次方与前面系数的对应关系
public:
operation(int high) : limit(high) {}
void add(int m, int n) {
mp[m] = n;
}
int sum(int x) {
int ans = 0;
for (int i = 0; i <= limit; i++) {
ans += mp[i] * pow(x, i);
}
return ans;
}
};
int main() {
int n;
scanf("%d", &n);
while (n--) {
int high;
scanf("%d", &high); // 最高的次数,接下来输入连续的0~high次方前的系数
operation op(high);
for (int i = 0; i <= high; i++) { // 使用map将次方与前面的系数一一对应起来,用次数作为键,系数作为值
int num;
scanf("%d", &num);
op.add(i, num);
}
// 输入代入多项式的值
int x;
scanf("%d", &x);
printf("%d\n", op.sum(x));
}
return 0;
}

京公网安备 11010502036488号