P5667 拉格朗日插值2(拉格朗日插值,NTT, 倒推求逆元)

本文介绍了拉格朗日插值的算法模板,并详细讲解了如何利用快速傅里叶变换(NTT)在O(n)时间内预处理所需数据,包括阶乘和逆元计算。同时提醒在实现过程中要注意乘法操作的细节。
摘要由CSDN通过智能技术生成

整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


Weblink

https://www.luogu.com.cn/problem/P5667

Problem
在这里插入图片描述
Solution
在这里插入图片描述
我们 O ( n ) O(n) O(n) 预处理一下式子中需要用到的多种阶乘,以及 m − n + i m-n+i mn+i 的逆元 ,然后直接 NTT 即可。

注意细心多乘 1ll

Code

// Problem: P5667 拉格朗日插值2
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P5667
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N = 1 << 19, p = 998244353, mod = 998244353, G = 3, GI = 332748118;

int limit, L, RR[N];
int minv[N], inv[N], fact[N], infact[N], mfact[N], minfact[N];


int qpow(int a, int b)
{
   
	int res = 1;
	while(b) {
   
		if(b & 1) res = 1ll * res * a % mod;
		a = 1ll * a * a % mod;
		b 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁凡さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值