[学习笔记] 单位根反演
单位根反演
[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 次单位根是 kkk 次幂为 111 的复数解 wkw_kwk。利用单位圆和单位根的关系很容易证明。
k∣nk\mid nk∣n
显然 ωkin\omega_k^{in}ωkin,相当于转了 ink\frac{in}kkin 圈单位圆,结果仍是 111。
1k∑i=0k−11=1=k∣n\frac 1k\sum_{i=0}^{k-1}1=1=k\mid nk1∑i=0k−11=1=k∣n
k∤nk\nmid nk∤n
使用等比数列求和。
[k∣n]=1k∑i=0k−1ωkin=1k⋅ωknk−1ωkn−1[k\mid n]=\frac 1k\sum_{i=0}^{k-1}\omega_k^{in}=\frac 1k·\frac{\omega_k^{nk}-1}{\omega_k^n-1}[k∣n]=k1∑i=0k−1ωkin=k1⋅ωkn−1ωknk−1
∵ωknk−1=ωk0−1=0∧ωkn−1≠0\because\omega_k^{nk}-1=\omega_k^0-1=0\wedge \omega_k^n-1\neq 0∵ωknk−1=ωk0−1=0∧ωkn−1=0
∴1k∑i=0k−1ωkin=0=[k∣n]=k∤n\therefore \frac 1k\sum_{i=0}^{k-1}\omega_k^{in}=0=[k\mid n]=k\nmid n∴k1∑i=0k−1ωkin=0=[k∣n]=k∤n
LOJ6485. LJJ学二项式定理
TTT 组数据,给定 n,s,a0,a1,a2,a3n,s,a_0,a_1,a_2,a_3n,s,a0,a1,a2,a3,求 ∑i=0nC(n,i)⋅si⋅ai(mod4)\sum_{i=0}^nC(n,i)·s^i·a_{i\pmod 4}∑i=0nC(n,i)⋅si⋅ai(mod4)。结果对 998244353998244353998244353 取模。
趁热打铁,我们很容易想到将 iii 按模 444 的余数进行分类。对于每一类我们只想统计该统计的数。
∑i=0n(ni)si∑j=03aj[imod 4=j]=∑i=0n(ni)si∑j=03aj[4∣(i−j)]\sum_{i=0}^n\binom nis^i\sum_{j=0}^3a_j[i\ \text{mod}\ 4=j]=\sum_{i=0}^n\binom nis^i\sum_{j=0}^3a_j[4\mid(i-j)] i=0∑n(in)sij=0∑3aj[i mod 4=j]=i=0∑n(in)sij=0∑3aj[4∣(i−j)]
直接单位根反演:[4∣(i−j)]=14∑k=03ω4k(i−j)[4|(i-j)]=\frac{1}{4}\sum_{k=0}^3\omega_{4}^{k(i-j)}[4∣(i−j)]=41∑k=03ω4k(i−j)
⇒∑i=0n(ni)si⋅14∑j=03aj⋅∑k=03ω4kiω4−kj=14∑j=03aj∑k=03ω4−kj∑i=0n(ni)siω4ki\Rightarrow \sum_{i=0}^n\binom nis^i·\frac 14\sum_{j=0}^3a_j·\sum_{k=0}^3\omega_4^{ki}\omega_4^{-kj}=\frac 14\sum_{j=0}^3a_j\sum_{k=0}^3\omega_4^{-kj}\sum_{i=0}^n\binom nis^i\omega_4^{ki} ⇒i=0∑n(in)si⋅41j=0∑3aj⋅k=0∑3ω4kiω4−kj=41j=0∑3ajk=0∑3ω4−kji=0∑n(in)siω4ki
二项式定理:∑i=0n(ni)siω4ki=∑i=0n(ni)(sω4k)i=(sω4k+1)n\sum_{i=0}^n\binom nis^i\omega_4^{ki}=\sum_{i=0}^n\binom ni(s\omega_4^k)^i=(s\omega_4^k+1)^n∑i=0n(in)siω4ki=∑i=0n(in)(sω4k)i=(sω4k+1)n
⇒14∑j=03aj∑k=03ω4−jk(sω4k+1)n\Rightarrow \frac 14\sum_{j=0}^3a_j\sum_{k=0}^3\omega_4^{-jk}(s\omega_4^k+1)^n ⇒41j=0∑3ajk=0∑3ω4−jk(sω4k+1)n
模 998244353998244353998244353 意义下是有四次单位根的,且原根为 333,有 ω41=g(mod−1)/4\omega_4^1=g^{(mod-1)/4}ω41=g(mod−1)/4。
直接算即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mod 998244353
int T, n, s;
int a[10], w[10] = { 1, 911660635, 998244352, 86583718 };int qkpow( int x, int y ) {int ans = 1;while( y ) {if( y & 1 ) ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans;
}signed main() {scanf( "%lld", &T );while( T -- ) {scanf( "%lld %lld", &n, &s );for( int i = 0;i < 4;i ++ ) scanf( "%lld", &a[i] );int ans = 0;for( int i = 0;i < 4;i ++ ) {int sum = 0;for( int j = 0;j < 4;j ++ )( sum += w[(4 - i) * j % 4] * qkpow( s * w[j] % mod + 1, n ) ) %= mod;( ans += sum * a[i] ) %= mod;}printf( "%lld\n", ans * qkpow( 4, mod - 2 ) % mod );}return 0;
}
/*
6
1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5
*/
[学习笔记] 单位根反演相关推荐
- 【学习笔记】斯特林反演+单位根反演
upd:抄了一下 ppt \text{ppt} ppt. 1.1 1.1 1.1 斯特林反演 有两个恒等式: [ i = j ] = ∑ ( − 1 ) i − k [ i k ] { k j } [ ...
- 莫比乌斯反演专题学习笔记
莫比乌斯反演专题学习笔记 本文记录一些和莫反有关的内容的笔记 可能存在诸多谬误,阅读时请谨慎分析 若发现文中有谬误,如您愿意,恳请您向我指出,不胜感激! 为什么要学莫比乌斯反演? 解决一类与狄利克雷卷 ...
- 【学习笔记】超简单的快速数论变换(NTT)(FFT的优化)(含全套证明)
整理的算法模板合集: ACM模板 目录 一.前置知识 二.快速数论变换(NTT) 三.NTT证明(和FFT的关系) 四.NTT模板 数组形式的实现 vector形式的实现 点我看多项式全家桶(●^◡_ ...
- 【学习笔记】超简单的快速傅里叶变换(FFT)(含全套证明)
整理的算法模板合集: ACM模板 目录 一.概念概述 二.前置知识 1. 多项式 2. 复数 4. 欧拉公式证明 3. 复数的单位根 / 单位向量 三.FFT 算法概述 四.离散傅里叶变换(DFT) ...
- 快速傅里叶变换学习笔记(更新中)
快速傅里叶变换(FFT)学习笔记 简介 快速傅里叶变换($ \rm Fast Fourier Transformation $), 简称 \(\rm FFT\), 用于在 $ \Theta(n\log ...
- 狄利克雷卷积_狄利克雷卷积学习笔记
蒟蒻我在莫比乌斯反演学习笔记里留下了几个坑,于是开始漫长的填坑路. 狄利克雷卷积学习笔记 前置知识1:数论函数 什么是数论函数呢?数论函数指定义域为正整数,陪域为复数的函数. 以下知识中涉及到的函数大 ...
- 数学/数论专题-学习笔记:狄利克雷卷积
数学/数论专题-学习笔记:狄利克雷卷积 1. 前言 2. 一些基础函数 3. 积性函数 4. 狄利克雷卷积 5. 总结 6. 参考资料 1. 前言 狄利克雷卷积,是学习与继续探究 μ\muμ 函数和 ...
- 马科维茨模型 matlab,马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)...
这是本阶段最后一次学习马科维茨投资组合理论的软件实现. 一.创建投资组合 %模拟N种资产的收益率mu=[10 20 30 50 60 90 120];sigma=[0.06 0.01 0.2 0.8 ...
- [学习笔记]多项式与有标号简单图计数
学了一天的有标号无向图计数真的自闭了- 本篇文章是基于2019WC汪乐平大佬的讲课课件<生成函数,多项式算法与图的计数>编写的. 注意:文中所有生成函数都规定为指数型生成函数(EGF),请 ...
最新文章
- torch 多进程队列 问题
- html 判断页面支持canvas,HTML5 Canvas之测试浏览器是否支持Canvas的方法
- php里怎么添加计时器,如何使用php显示计时器?
- 快速计算整数的二进制表示法中1的个数
- 前端学习(3294):effect hook
- Java多线程学习(二)synchronized关键字(1)
- [转载] 用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
- 2-ESP8266 SDK开发基础入门篇--点亮一个灯
- 最新正版nero7序列号注册码
- Android 三类框架的理解以及MVVM框架的使用
- Global Shutter(全局快门)与Rolling Shutter(卷帘快门)的区别与比较
- JavaScript实现富文本编辑器
- 用Java来解析torrent文件
- 网页游戏外挂的设计与编写:QQ摩天大楼【二】(登陆准备-信息处理方式)
- android 获取经纬度(百度地图)
- 笔记:新手SEOer必备的WordPress优化插件
- PHP开源项目——同城跑腿管理系统
- oracle java.sql.SQLException: ORA-00911: 无效字符和ORA-01017: invalid username/password; logon denied
- HDU6194 后缀数组的应用
- 求Python工程师推荐
热门文章
- signature=18441de5a4bb8df92eb5cf5dcca47d1e,Heroísmo y los medios de comunicación (Capítulo 5A 5B)...
- android 横向stepview,Android 流程指示器 StepView
- lol修改服务器域名,LOL历史转区用户解冻大区官网自助系统地址 新版申请解冻账号网址...
- java线程带来的异常,java多线程练习之捕获子线程异常例子
- java设计模式face_java设计模式之-------原型模式
- 用matlab算24点小游戏,24点游戏的Matlab程序
- java短信接口 调用_带你了解短信接口的调用
- android system window,Android之属性fitsSystemWindows
- mysql 5.5 免安装_mysql 5.5.56免安装版配置方法
- [JavaWeb-HTML]HTML文本标签