这么丑陋的代码一次性过了
#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; }