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

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int N=2e3+5;
 5 const int mod=998244353;
 6 ll x[N],y[N],n,k,ans;
 7 ll quipow(ll a,ll n)
 8 {
 9     ll ans=1%mod;
10     while(n)
11     {
12         if(n&1)ans=ans*a%mod;
13         n>>=1;
14         a=a*a%mod;
15     }
16     return ans;
17 }
18 int main()
19 {
20     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
21     cin>>n>>k;
22     for(int i=1;i<=n;i++)cin>>x[i]>>y[i];
23     for(int i=1;i<=n;i++)
24     {
25         ll s1=(y[i]+mod)%mod,s2=1%mod;
26         for(int j=1;j<=n;j++)
27         {
28             if(i==j)continue;
29             s1=s1*(k-x[j]+mod)%mod,s2=s2*(x[i]-x[j]+mod)%mod; 
30         }
31         ans=(ans+s1*quipow(s2,mod-2)%mod)%mod;
32     }
33     cout<<ans<<"\n";
34     return 0;
35 }
复制代码

 

posted @   matt-11  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示