1 solutions
-
0
学过高数的话,是不是应该知道拉格朗日插值?
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 0x3f3f3f3f3f3f3f3f; typedef multiset<ll>::iterator itt; const int N = 2e3+11, P = 998244353; ll n, k, x[N], y[N]; ll ksm(ll a, ll b){ ll x = 1; while(b){ if(b & 1) x = x * a % P; a = a * a % P; b >>= 1; } return x; } void work(){ scanf("%lld%lld",&n,&k); for(int i=0;i<n;i++) scanf("%lld%lld",&x[i],&y[i]); ll ans = 0; for(int i=0;i<n;i++){ ll a = y[i], b = 1; for(int j=0;j<n;j++) if(j != i){ a = a * (k - x[j] + P) % P; b = b * (x[i] - x[j] + P) % P; } ans = ans + (a * ksm(b, P - 2)) % P; } printf("%lld\n",(ans + P) % P); } int main(){ int t = 1; // scanf("%d",&t); while(t--) work(); return 0; }
- 1
Information
- ID
- 541
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 68
- Accepted
- 1
- Uploaded By