RiverSheepSHEEP

P4781 【模板】拉格朗日插值

奔跑的心634·2022-03-11 19:43·35 次阅读

P4781 【模板】拉格朗日插值

NoteNoteNoteNoteNote#

考虑构造函数f

f(k)=i=1nyijikxjxixj

求多项式在某一位置的取值#

对于求f(k),将k带入即可,时间复杂度为O(n2)

求多项式每一项的系数#

考虑将f展开,时间复杂度的瓶颈在于求ji(xxj)
先预处理出S=(xxj)
所以ji(xxj)=Sxxi,此时用朴素的多项式除法即可,时间复杂度仍为O(n2)

CodeCodeCodeCodeCode#

求多项式在某一位置的取值#

Copy
#include<cstdio> #define LL long long using namespace std; const int P = 998244353; int n; LL m,x[2005],y[2005]; LL fpow(int x,LL y) { LL res = 1; for (; x; x >>= 1,y = y * y % P) if (x & 1) res = res * y % P; return res; } int main() { scanf("%d%lld",&n,&m); for (int i = 1; i <= n; i++) scanf("%lld%lld",&x[i],&y[i]); LL ans = 0; for (int i = 1; i <= n; i++) { LL p = y[i],q = 1; for (int j = 1; j <= n; j++) if (j != i) p = p * (m - x[j]) % P,q = q * (x[i] - x[j]) % P; p = (p + P) % P,q = (q + P) % P; ans = (ans + p * fpow(P - 2,q) % P) % P; } printf("%lld\n",ans); }
posted @   RiverSheep  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
目录