分块题
列出表达式可以发现每个区间 [L,R] 对于 B≤R−L 的块长的运算量表达式中不平凡的是 ⌊L−1B⌋−⌊R−1B⌋
枚举 B 和商,对应区间求出来 ±1 的和即可。由于有贡献区间限制,于是要树状数组。复杂度来到 Θ(nlog2n)
神必题
2022-03-13 模拟赛 T3
逆天题
fi 的 OGF 为 (n−1∏i=0(1+xi))mmod(xn−1)
模 xn−1 就是做长度为 n 的 DFT ,于是 ˆfi=(n−1∏k=01+ωikn)m 。设 d=gcd(i,n),处理掉不是转 n 下转回的情况(挪到指数上),此时可以将表达式写作: ˆfi=⎛⎜⎝nd−1∏k=0(1−ωkn/d)⎞⎟⎠dm 。
根据伟大的因式分解哲学,xn−1=0 有 n 个复根,分别为 ω0n…ωn−1n ,于是 LHS=n∏i=0x−ωin 。带入 x=−1 可以得到 ˆfi 的化简过后的形式: ˆfi=[2∤nd]2md
最终答案是 n−1∑i=0f2i=n−1∑i=0fifn−i=n−1∑i=0fif−i(modn)=[x0]F2(x) ,也就是一个卷积的形式。不难发现 gcd(i,n)=gcd(j,n)⇒ˆfi=ˆfj 。于是求出来 ˆf 之后对于 d∣n 的 d 计算 φ(nd)ˆf2d 即可(因为 IDFT 矩阵的第零行全是 1)
求 ˆf 的过程需要暴力搜因子配合光速幂,找因子需要 Pollard-Rho于是我鸽了。φ 边搜因数边算即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律