思路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