这么丑陋的代码一次性过了

#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;
}