单位根反演[loj6485]LJJ 学二项式定理
前言
之前写反演的博客对于单位根反演只提了FFT
这里补一下一个应用
单位根反演
fi=∑j=0n−1ωni∗jgj⇔gi=∑j=0n−1ωn−i∗jnfjf_i=\sum_{j=0}^{n-1}\omega_n^{i*j}g_j\Leftrightarrow g_i=\sum_{j=0}^{n-1}\frac{\omega_n^{-i*j}}nf_jfi=j=0∑n−1ωni∗jgj⇔gi=j=0∑n−1nωn−i∗jfj
这是FFT里的
证明很方便,见我的博客对于容斥原理&反演的思考和总结
事实上,我们思考上式的本质
我们发现就是
[n∣x]=1n∑i=0n−1(ωnx)i[n|x]=\frac1n\sum_{i=0}^{n-1}(\omega_n^x)^i[n∣x]=n1i=0∑n−1(ωnx)i
FFT中的形式把xxx取值a−ba-ba−b,又保证∣a−b∣<n|a-b|<n∣a−b∣<n那么n∣xn|xn∣x只有在a=ba=ba=b的时候满足,即δa,b\delta_{a,b}δa,b
所以根据这个我们可以得到更多的应用,常见形式如下
对一个多项式
f(x)=∑i=0n−1aixif(x)=\sum_{i=0}^{n-1}a_ix^if(x)=i=0∑n−1aixi
求所有次数为kkk的倍数的系数之和
Ans=∑i=0n−1[k∣i]ai\begin{aligned} Ans&=\sum_{i=0}^{n-1}[k|i]a_i\\ \end{aligned}Ans=i=0∑n−1[k∣i]ai
题解
题目要求的是
[∑i=0n((ni)⋅si⋅aimod4)]mod  998244353\left[\sum_{i=0}^n\left(\binom ni·s^i·a_{i\ mod\ 4}\right)\right]\mod998244353[i=0∑n((in)⋅si⋅ai mod 4)]mod998244353
我们对imod  4i\mod4imod4的值进行分别讨论,我们现在要求的就是各组的系数和
我们现在要求
[∑i=0n((ni)⋅si[4∣i])]mod  998244353\left[\sum_{i=0}^n\left(\binom ni·s^i[4|i]\right)\right]\mod998244353[i=0∑n((in)⋅si[4∣i])]mod998244353
∑i=0n((ni)⋅si[4∣i])=∑i=0n((ni)⋅si14∑j=04−1(ω4i)j)=14∑j=03∑i=0n((ni)⋅si(ω4j)i)=14∑j=03(sω4j+1)n\begin{aligned} \sum_{i=0}^n\left(\binom ni·s^i[4|i]\right)&=\sum_{i=0}^n\left(\binom ni·s^i\frac14\sum_{j=0}^{4-1}(\omega_4^i)^j\right)\\ &=\frac14\sum_{j=0}^{3}\sum_{i=0}^n\left(\binom ni·s^i(\omega_4^j)^i\right)\\ &=\frac14\sum_{j=0}^{3}\left(s\omega_4^j+1\right)^n\\ \end{aligned}i=0∑n((in)⋅si[4∣i])=i=0∑n((in)⋅si41j=0∑4−1(ω4i)j)=41j=0∑3i=0∑n((in)⋅si(ω4j)i)=41j=0∑3(sω4j+1)n
那么单个的系数就求得了,那么我们发现除了[4∣i][4|i][4∣i]的情况,还有[4∣i−1][4|i-1][4∣i−1],[4∣i−2][4|i-2][4∣i−2],[4∣i−3][4|i-3][4∣i−3]的情况,那么相当于是我们将关于x=ω4jx=\omega_4^jx=ω4j的函数的值分别乘以x−1,x−2,x−3x^{-1},x^{-2},x^{-3}x−1,x−2,x−3,然后(具体做法是,对于x=ω4ix=\omega_4^ix=ω4i,x−1=ω4−ix^{-1}=\omega_4^{-i}x−1=ω4−i),其它的一样做即可
代码
#include<bits/stdc++.h>
typedef long long ll;
#define rg register
template <typename T> inline void read(T&x){char cu=getchar();x=0;bool fla=0;while(!isdigit(cu)){if(cu=='-')fla=1;cu=getchar();}while(isdigit(cu))x=x*10+cu-'0',cu=getchar();if(fla)x=-x;}
template <typename T> inline void printe(const T x){if(x>=10)printe(x/10);putchar(x%10+'0');}
template <typename T> inline void print(const T x){if(x<0)putchar('-'),printe(-x);else printe(x);}
const ll mod=998244353;
ll T,n,s,a0,a1,a2,a3,w0,w1,w2,w3,inv;
inline ll pow(ll x,ll y)
{ll res=1;for(;y;y>>=1,x=x*x%mod)if(y&1)res=res*x%mod;return res;
}
int main()
{read(T);w0=1,w1=pow(3,(mod-1)/4),w2=w1*w1%mod,w3=w1*w2%mod;inv=pow(4,mod-2);while(T--){read(n),read(s),read(a0),read(a1),read(a2),read(a3);const ll k0=pow(s*w0%mod+1,n),k1=pow(s*w1%mod+1,n),k2=pow(s*w2%mod+1,n),k3=pow(s*w3%mod+1,n);ll ans=0;ans=(ans+(k0*w0+k1*w0+k2*w0+k3*w0)%mod*a0)%mod;ans=(ans+(k0*w0+k1*w3+k2*w2+k3*w1)%mod*a1)%mod;ans=(ans+(k0*w0+k1*w2+k2*w0+k3*w2)%mod*a2)%mod;ans=(ans+(k0*w0+k1*w1+k2*w2+k3*w3)%mod*a3)%mod;print(ans*inv%mod),putchar('\n');}return 0;
}
总结
单位根反演需要推式子,但写起来比较清真
单位根反演[loj6485]LJJ 学二项式定理相关推荐
- 【LOJ 6485】LJJ 学二项式定理(单位根反演)(模板)
LJJ 学二项式定理 题目链接:LOJ 6485 题目大意 求一个式子: ∑ i = 0 n ( ( n i ) s i a i m o d 4 ) \sum\limits_{i=0}^n(\bino ...
- Loj 6485. LJJ 学二项式定理
Loj 6485. LJJ 学二项式定理 题目描述 LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案. 但人口算毕竟会失误,他请来了你 ...
- Loj#6485. LJJ 学二项式定理
Loj#6485. LJJ 学二项式定理(单位根反演) 题目描述 题目描述 题意:求下面式子的答案QAQ. [∑((ni)⋅si⋅aimod4)]mod998244353[\sum(\tbinom{n ...
- [LOJ 6485]LJJ 学二项式定理
[LOJ 6485] LJJ 学二项式定理 题意 给定 \(n,s,a_0,a_1,a_2,a_3\), 求: \[ \Large \left[ \sum_{i=0}^n \left( {n\choo ...
- LJJ 学二项式定理
题目: https://loj.ac/problem/6485 给定n,s,a0,a1,a2,a3n,s,a_0,a_1,a_2,a_3n,s,a0,a1,a2,a3,求 [∑i=0n(ni) ...
- [学习笔记] 单位根反演
单位根反演 [k∣n]=1k∑i=0k−1ωkin[k\mid n]=\frac 1k\sum_{i=0}^{k-1}\omega_k^{in}[k∣n]=k1∑i=0k−1ωkin kkk 次 ...
- P5591 小猪佩奇学数学(单位根反演)
P5591 小猪佩奇学数学 ∑i=0n(in)×pi×⌊ik⌋⌊ik⌋=i−i%kk1k∑i=0n(in)×pi×(i−i%k)1k∑i=0n(in)×pi×i−1k∑i=0n(in)×pi(imod ...
- 【BZOJ3328】PYXFIB【矩阵快速幂】【单位根反演】【二项式定理】
传送门 题意: ∑i=0⌊nk⌋(nik)Fik\sum_{i=0}^{\lfloor\frac nk\rfloor}\binom n{ik}F_{ik}i=0∑⌊kn⌋(ikn)Fik FF ...
- 【集训队作业2018】复读机【指数型生成函数】【单位根反演】【二项式定理】
传送门 单位根反演听着高级,其实没啥技术含量-- 本文是篇几乎没有证明的佛系讲解 单位根反演的式子长这样: 1n∑i=0n−1ωnik=[k∣n]\frac{1}{n}\sum_{i=0}^{n-1} ...
最新文章
- ThinkPHP的基本操作
- 4.2 One-Shot 学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 将zookeeper、Tomcat、redis部署成windos服务
- Win7系统中必需记住的14个常用快捷键
- zabbix3 mysql_mysql分表-zabbix3.x
- 24.事务控制和锁定语句
- win10笔记本电脑双系统 安装黑苹果系统macOS 小白黑苹果乐园下载资源简便安装黑苹果方式,非常详细,还有资源!
- 计算机控制系统编程语言有哪些,PLC编程语言有哪些种类
- 网页游戏《Drakensang》评测——改进道具收费模式可行性分析
- Bad Request This combination of host and port requires TLS
- 住院病历的病历打印纸要求多大?
- mysql历史数据自动归档
- 《Visual Prompting: Modifying Pixel Space to Adapt Pre-trained Models》论文阅读笔记
- 百行代码构建神经网络黑白图片自动上色系统
- vue路由router的props配置
- 转发与重定向的区别详解
- 视听说教程(第三版)4 quiz 8
- 【CodeForces】[546A]Soldier and Bananas
- JAVA社招,让老板心动的简历原来是这样
- 苹果7防水吗_苹果手机防水是真的吗?事实很残酷,但还可以抢救一下
热门文章
- 引入其他配置文件(分模块开发)
- Hive的基本操作-创建内部表
- AOP日志-查询日志流程分析
- 数据库-优化-数据库结构的优化-拆分优化
- Eureka深入理解
- Zookeeper的典型应用场景(1)
- python getattr_python __getattr__
- java重置_JAVA復制數組和重置數組大小
- 解决MySQL报错... right syntax to use near ‘password ‘XXX‘ at line 1...ERROR 1064 42000: You have an erro
- CentOS7 常用命令集合