#3328. PYXFIB

∑i=0⌊nk⌋Cni×k×Fi×k∑i=0nCni×Fi×[i≡0(modk)]i≡0(modk),单位根反演有1k∑j=0k−1wkij1k∑i=0nCni×Fi∑j=0k−1wkij\sum_{i = 0} ^{\lfloor \frac{n}{k} \rfloor} C_{n} ^{i \times k} \times F_{i \times k}\\ \sum_{i = 0} ^{n} C_n ^{i} \times F_i \times [i \equiv 0 \pmod k]\\ i \equiv 0 \pmod k,单位根反演有 \frac{1}{k} \sum_{j = 0} ^{k - 1} w_k ^ {ij}\\ \frac{1}{k}\sum_{i = 0} ^{n} C_n ^ i \times F_i \sum_{j = 0} ^{k - 1} w_k ^{ij}\\ i=0∑⌊kn​⌋​Cni×k​×Fi×k​i=0∑n​Cni​×Fi​×[i≡0(modk)]i≡0(modk),单位根反演有k1​j=0∑k−1​wkij​k1​i=0∑n​Cni​×Fi​j=0∑k−1​wkij​
由于FiF_iFi​为斐波那契数列的第iii项,构造矩阵A=[1101]A = [_1 ^ 1\ _0 ^ 1]A=[11​ 01​],则有Ai[0][0]A ^ i[0][0]Ai[0][0]为FiF_iFi​,∑i=0nCni×Fi=(I+A)n\sum\limits_{i = 0} ^{n}C_n ^ i \times F_i = (I + A) ^ ni=0∑n​Cni​×Fi​=(I+A)n。
1k∑i=0n∑j=0k−1Cni×Ai×wkij1k∑j=0k−1(A×wkj+I)n\frac{1}{k} \sum_{i = 0} ^{n} \sum_{j = 0} ^{k - 1} C_{n} ^ i \times A ^ i \times w_{k} ^ {ij}\\ \frac{1}{k}\sum_{j = 0} ^{k - 1}(A \times w_k ^ j + I) ^ n\\ k1​i=0∑n​j=0∑k−1​Cni​×Ai×wkij​k1​j=0∑k−1​(A×wkj​+I)n

#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")using namespace std;int n, k, mod;int dec(int a, int b) {return a >= b ? a - b : a + mod - b;
}int add(int a, int b) {return a + b >= mod ? a + b - mod : a + b;
}namespace min_25 {const int N = 1e6 + 10;int a[N], id1[N], id2[N], prime[N], g1[N], s[N], sum1[N], sum[N], m, cnt, T, wn;bool st[N];inline int ID(int x) {return x <= T ? id1[x] : id2[n / x];}void pre() {T = sqrt(n + 0.5);for (int i = 2; i <= T; i++) {if (!st[i]) {prime[++cnt] = i;sum1[cnt] = sum1[cnt - 1] + 1;}for (int j = 1; j <= cnt && 1ll * i * prime[j] <= T; j++) {st[i * prime[j]] = 1;if (i % prime[j] == 0) {break;}}}for (int l = 1, r; l <= n; l = r + 1) {r = n / (n / l);a[++m] = n / l;a[m] <= T ? id1[a[m]] = m : id2[n / a[m]] = m;g1[m] = a[m] - 1;}for (int j = 1; j <= cnt && 1ll * prime[j] * prime[j] <= n; j++) {for (int i = 1; i <= m && 1ll * prime[j] * prime[j] <= a[i]; i++) {g1[i] = dec(g1[i], dec(g1[ID(a[i] / prime[j])], sum1[j - 1]));}}}void init() {for (int i = 1; i <= cnt; i++) {sum[i] = add(sum[i - 1], wn);}for (int i = 1; i <= m; i++) {s[i] = 1ll * g1[i] * wn % mod;}for (int j = cnt; j >= 1; j--) {for (int i = 1; i <= m && 1ll * prime[j] * prime[j] <= a[i]; i++) {for (int cur = prime[j], w = wn; 1ll * cur * prime[j] <= a[i]; cur *= prime[j], w = 1ll * w * wn % mod) {s[i] = add(s[i], add(1ll * dec(s[ID(a[i] / cur)], sum[j]) * w % mod, 1ll * wn * w % mod));}}}}int solve(int n) {return n ? s[ID(n)] + 1 : 0;}
}int quick_pow(int a, int n) {int ans = 1;while (n) {if (n & 1) {ans = 1ll * ans * a % mod;}a = 1ll * a * a % mod;n >>= 1;}return ans;
}int get_g() {if (mod == 2) {return 1;}int cur = mod - 1;vector<int> facts;for (int i = 2; 1ll * i * i <= cur; i++) {if (cur % i == 0) {facts.push_back(i);while (cur % i == 0) {cur /= i;}}}if (cur != 1) {facts.push_back(cur);}for (int i = 1; ; i++) {if (__gcd(i, mod) != 1) {continue;}int flag = 1;for (int &it : facts) {if (quick_pow(i, (mod - 1) / it) == 1) {flag = 0;break;}}if (flag) {return i;}}
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);scanf("%d %d %d", &n, &k, &mod);int w[20] = {1}, wn = quick_pow(get_g(), (mod - 1) / k);for (int i = 1; i <= k; i++) {w[i] = 1ll * w[i - 1] * wn % mod;}int ans[20] = {0};min_25::pre();for (int j = 0; j < k; j++) {min_25::wn = w[j];min_25::init();int res = 0;for (int l = 1, r; l <= n; l = r + 1) {r = n / (n / l);int cur = dec(min_25::solve(r), min_25::solve(l - 1));res = add(res, 1ll * (n / l) * cur % mod);}for (int r = 0; r < k; r++) {ans[r] = add(ans[r], 1ll * w[k - j * r % k] * res % mod);}}int inv_k = quick_pow(k, mod - 2);for (int i = 0; i < k; i++) {printf("%lld ", 1ll * ans[i] * inv_k % mod);}return 0;
}

#3328. PYXFIB(单位根反演)相关推荐

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

  2. 单位根反演[loj6485]LJJ 学二项式定理

    前言 之前写反演的博客对于单位根反演只提了FFT 这里补一下一个应用 单位根反演 fi=∑j=0n−1ωni∗jgj⇔gi=∑j=0n−1ωn−i∗jnfjf_i=\sum_{j=0}^{n-1}\o ...

  3. POJChallengeRound2 Guideposts 【单位根反演】【快速幂】

    题目分析: 这题的目标是求$$ \sum_{i \in [0,n),k \mid i} \binom{n}{i}G^i $$ 这个形式很像单位根反演. 单位根反演一般用于求:$ \sum_{i \in ...

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

  5. 【HNOI2019】白兔之舞【组合数学】【矩阵快速幂】【单位根反演】【Chirp Z-Transform】【原根】【MTT】

    题意:有一张 (L+1)×n(L+1)\times n(L+1)×n 个点的有向图,每个结点有二元组 (x,y)(0≤x≤L,1≤y≤n)(x,y)~(0\leq x\leq L,1\leq y\le ...

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

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

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

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

  8. P5591-小猪佩奇学数学【单位根反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P5591 题目大意 给出n,p,kn,p,kn,p,k求 (∑i=0n(ni)pi⌊ik⌋)mod998244353 ...

  9. Loj#6247-九个太阳【单位根反演】

    正题 题目链接:https://loj.ac/p/6247 题目大意 给出n,kn,kn,k求 ∑0≤i≤n,i∣k(ni)\sum_{0\leq i\leq n,i|k}\binom{n}{i}0≤ ...

最新文章

  1. 基于深度学习的肺癌预测诊断
  2. mingw msys 编译 libzip
  3. YII1 MVC初认识(二)
  4. k8s基础概念:pause容器和pod控制器类型
  5. 系统通知并发问题_玩转Java高并发?请先说明下并发下的惊群效应
  6. OpenStack组件——Keystone身份认证
  7. 苹果CMS V8 电脑手机自适应电影模板
  8. 过滤器链模式PK匿名方法实现,哪个更优雅?
  9. HDU2966 In case of failure(浅谈k-d tree)
  10. keil5 配置 stm32f103rc 软件仿真
  11. 基于内容的图像检索系统设计与实现
  12. Android之ListView
  13. IPFS windos 搭建
  14. 企业微信集成EAS流程助手
  15. [advGAN]Generating Adversarial Examples With Adversarial Networks
  16. 使用Matlab和Minepy工具箱做变量的互信息MIC (maximal information coefficient ) 分析
  17. Excel根据身份证号批量提取出生日期
  18. 免费的万能格式转换器 Convertio超级文件格式转换器
  19. 小i机器人受邀出席首尔亚洲金融论坛
  20. 和HTTP协议密切协议

热门文章

  1. linux下覆盖文件命令,在Linux中使用命令行进行文件覆盖的操作
  2. mysql查询今天_昨天_7天_近30天_本月_上一月 数据_mysql查询今天、昨天、7天、近30天、本月、上一月 数据...
  3. python 工资管理软件_智慧职教云课堂2020Python程序设计(深圳信息职业技术学院)题目答案...
  4. 绝不翻车珍珠奶茶做法
  5. 只有学霸才懂的学习技巧,看完脑洞大开,绝对涨姿势!
  6. 听说你在学习算法?清华教授为你准备了一份独家秘籍!
  7. 我们计划招收300名学员,免费攻读人工智能专业
  8. 我们只知大势将至,却不知未来已来
  9. mysql老叶博客_MySQL binlog后面的编号最大是多大?【老叶茶馆公众号】
  10. docker pull 私有_【赵强老师】管理Docker镜像