前言

之前写反演的博客对于单位根反演只提了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∗j​gj​⇔gi​=j=0∑n−1​nωn−i∗j​​fj​
这是FFT里的
证明很方便,见我的博客对于容斥原理&反演的思考和总结
事实上,我们思考上式的本质
我们发现就是
[n∣x]=1n∑i=0n−1(ωnx)i[n|x]=\frac1n\sum_{i=0}^{n-1}(\omega_n^x)^i[n∣x]=n1​i=0∑n−1​(ωnx​)i
FFT中的形式把xxx取值a−ba-ba−b,又保证∣a−b∣&lt;n|a-b|&lt;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−1​ai​xi
求所有次数为kkk的倍数的系数之和
Ans=∑i=0n−1[k∣i]ai\begin{aligned} Ans&amp;=\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&ThinSpace;&ThinSpace;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&ThinSpace;&ThinSpace;4i\mod4imod4的值进行分别讨论,我们现在要求的就是各组的系数和
我们现在要求
[∑i=0n((ni)⋅si[4∣i])]mod&ThinSpace;&ThinSpace;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)&amp;=\sum_{i=0}^n\left(\binom ni·s^i\frac14\sum_{j=0}^{4-1}(\omega_4^i)^j\right)\\ &amp;=\frac14\sum_{j=0}^{3}\sum_{i=0}^n\left(\binom ni·s^i(\omega_4^j)^i\right)\\ &amp;=\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​)⋅si41​j=0∑4−1​(ω4i​)j)=41​j=0∑3​i=0∑n​((in​)⋅si(ω4j​)i)=41​j=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 学二项式定理相关推荐

  1. 【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 ...

  2. Loj 6485. LJJ 学二项式定理

    Loj 6485. LJJ 学二项式定理 题目描述 LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案. 但人口算毕竟会失误,他请来了你 ...

  3. Loj#6485. LJJ 学二项式定理

    Loj#6485. LJJ 学二项式定理(单位根反演) 题目描述 题目描述 题意:求下面式子的答案QAQ. [∑((ni)⋅si⋅aimod4)]mod998244353[\sum(\tbinom{n ...

  4. [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 ...

  5. 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) ...

  6. [学习笔记] 单位根反演

    单位根反演 [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 次 ...

  7. 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 ...

  8. 【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 ...

  9. 【集训队作业2018】复读机【指数型生成函数】【单位根反演】【二项式定理】

    传送门 单位根反演听着高级,其实没啥技术含量-- 本文是篇几乎没有证明的佛系讲解 单位根反演的式子长这样: 1n∑i=0n−1ωnik=[k∣n]\frac{1}{n}\sum_{i=0}^{n-1} ...

最新文章

  1. ThinkPHP的基本操作
  2. 4.2 One-Shot 学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. 将zookeeper、Tomcat、redis部署成windos服务
  4. Win7系统中必需记住的14个常用快捷键
  5. zabbix3 mysql_mysql分表-zabbix3.x
  6. 24.事务控制和锁定语句
  7. win10笔记本电脑双系统 安装黑苹果系统macOS 小白黑苹果乐园下载资源简便安装黑苹果方式,非常详细,还有资源!
  8. 计算机控制系统编程语言有哪些,PLC编程语言有哪些种类
  9. 网页游戏《Drakensang》评测——改进道具收费模式可行性分析
  10. Bad Request This combination of host and port requires TLS
  11. 住院病历的病历打印纸要求多大?
  12. mysql历史数据自动归档
  13. 《Visual Prompting: Modifying Pixel Space to Adapt Pre-trained Models》论文阅读笔记
  14. 百行代码构建神经网络黑白图片自动上色系统
  15. vue路由router的props配置
  16. 转发与重定向的区别详解
  17. 视听说教程(第三版)4 quiz 8
  18. 【CodeForces】[546A]Soldier and Bananas
  19. JAVA社招,让老板心动的简历原来是这样
  20. 苹果7防水吗_苹果手机防水是真的吗?事实很残酷,但还可以抢救一下

热门文章

  1. 引入其他配置文件(分模块开发)
  2. Hive的基本操作-创建内部表
  3. AOP日志-查询日志流程分析
  4. 数据库-优化-数据库结构的优化-拆分优化
  5. Eureka深入理解
  6. Zookeeper的典型应用场景(1)
  7. python getattr_python __getattr__
  8. java重置_JAVA復制數組和重置數組大小
  9. 解决MySQL报错... right syntax to use near ‘password ‘XXX‘ at line 1...ERROR 1064 42000: You have an erro
  10. CentOS7 常用命令集合