1 solutions

  • 0
    @ 2025-4-2 23:38:22

    学过高数的话,是不是应该知道拉格朗日插值?

    #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