【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
",ans);
	return 0;
}

原文地址:https://www.cnblogs.com/cjyyb/p/9392911.html