拉格朗日插值学习

模板

#include<bits/stdc++.h>
using namespace std;
const int mod = 998244353;
int x[2010],y[2010],n,K,Ans=0;
inline int pw(int x,int p){
    int res=1;
    while(p){
      if(p&1)res=1ll*res*x%mod;
      x=1ll*x*x%mod;
      p>>=1;
    }
    return res;
}
int main(){
    int i,j,k;
    scanf("%d%d",&n,&K);
    for(i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
    for(i=1;i<=n;i++){
      int res=1;
      for(j=1;j<=n;j++)if(i!=j)res=1ll*res*(K-x[j])%mod*pw(x[i]-x[j],mod-2)%mod;
      Ans=(Ans+1ll*y[i]*res%mod)%mod;
    }
    printf("%d\n",Ans);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/yzxverygood/p/11470798.html