思路1

首先,可以看成这个题是求一个 关于 x 的函数 f (x),函数如下

                               
给出ai,对每次运算结果(aixi)求和
需注意,int溢出

代码

#include <iostream>
using namespace std;

const int N = 1e3 + 5, mod = 998244353;
int n, m,a[N], pow[N];

void fun(int x)
{
    pow[0] = 1;
     for(int i = 1; i <= n; i++)
     pow[i] = (1LL * pow[i - 1] * x) % mod;// !!! 1LL 
}

int f(int x)
{
    int ans = 0;
    for(int i =0; i <= n; i++)
    {
        ans = (ans + 1LL * a[i] * pow[i] % mod) % mod;// !!! 1LL
    }
    return ans;
}

int main()
{
    cin >> n;
    for(int i = 0; i <= n; i++)cin>> a[i];
    cin >> m;
    for(int i = 1; i <= m; i++)
    {
        int x;
        cin >> x;
        fun(x);
        cout << f(x) <<' ';
    }
}

思路2

每次   *x + a[i]
例如 f(x) = x2+ x + 1
0 * x + 1 = 1
1 * x + 1 = x + 1
(x + 1) * x + 1 = x2 + x + 1

代码

#include <iostream>
using namespace std;

const int N = 1e3 + 5, mod = 998244353;
int n, m,a[N], ans;

int main()
{
    cin >> n;
    for(int i = 0; i <= n; i++)cin>> a[i];
    cin >> m;
    for(int i = 1; i <= m; i++)
    {
        int x;
        cin >> x;
        ans = 0;
        for(int j = n; j >= 0; j--)
        ans = (1LL * ans * x % mod+ a[j])% mod;
        cout << ans <<' ';
    }
}