题解:P4781 【模板】拉格朗日插值
BlackHoles · · 题解
前置知识
此题为模板题,仅需要逆元与基本数学函数知识。
正解:拉格朗日插值法
首先,对于一个
我们考虑对于
这样的话,原函数
那么问题就变成了构造函数
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll Mod = 998244353;
const int N = 2005;
int n;
ll x[N], y[N], k;
ll ans;
ll qpow(ll base, int power) {
ll res = 1;
while (power) {
if (power & 1) res = res * base % Mod;
base = base * base % Mod;
power >>= 1;
}
return res;
}
int main(void) {
cin.tie(0) -> ios::sync_with_stdio(false);
cin >> n >> k;
for (int i = 1; i <= n; ++i)
cin >> x[i] >> y[i];
for (int i = 1; i <= n; ++i) {
ll p = 1, q = 1;
for (int j = 1; j <= n; ++j)
if (j != i)
p = p * ((k - x[j] + Mod) % Mod) % Mod, q = q * ((x[i] - x[j] + Mod) % Mod) % Mod;
ans = (ans + p * qpow(q, Mod - 2) % Mod * y[i] % Mod) % Mod;
}
cout << ans;
return 0;
}