【Luogu4781】【模板】拉格朗日插值

【Luogu4781】【模板】拉格朗日插值

題面

洛谷html

題解

套個公式就好code

#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;
}
相關文章
相關標籤/搜索