#include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #define LL long long #define ULL unsigned long long #define rep(i,j,k) for(int i=j;i<=k;i++) #define dep(i,j,k) for(int i=k;i>=j;i--) #define INF 0x3f3f3f3f #define mem(i,j) memset(i,j,sizeof(i)) #define make(i,j) make_pair(i,j) #define pb push_back #define Pi acos(-1.0) using namespace std; const int N = 2e3 + 5, mod = 998244353; int x[N], y[N]; int ksm(int a, int b) { int ans = 1; while(b) { if(b & 1) ans = 1LL * ans * a % mod; a = 1LL * a * a % mod; b >>= 1; } return ans; } int inv(int a) { return ksm(a, mod - 2); } int main() { int n, k; scanf("%d %d", &n, &k); rep(i, 1, n) scanf("%d %d", &x[i], &y[i]); LL ans = 0; rep(i, 1, n) { int s1 = y[i] % mod, s2 = 1; rep(j, 1, n) { if(i == j) continue; s1 = 1LL * (k - x[j]) * s1 % mod; s2 = 1LL * s2 * (x[i] - x[j]) % mod; } s1 = 1LL * s1 * inv((s2 + mod) % mod) % mod; ans = (ans + s1 + mod) % mod; } cout << ans << endl; return 0; }
原文:https://www.cnblogs.com/Willems/p/11144739.html