【Luogu4781】【模板】拉格朗日插值
【Luogu4781】【模板】拉格朗日插值
题面
题解
套个公式就好
#include<cstdio>
#define ll long long
#define MOD 998244353
#define MAX 2020
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int n,K,x[MAX],y[MAX],ans;
int fpow(int a,int b)
{
int s=1;
while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}
return s;
}
int main()
{
n=read()-1;K=read();
for(int i=0;i<=n;++i)x[i]=read(),y[i]=read();
for(int i=0;i<=n;++i)
{
int tmp=1;
for(int j=0;j<=n;++j)
if(i!=j)tmp=1ll*tmp*(K-x[j])%MOD*fpow(x[i]-x[j],MOD-2)%MOD;
ans=(ans+1ll*y[i]*tmp)%MOD;
}
ans=(ans+MOD)%MOD;printf("%d\n",ans);
return 0;
}