Problem I. Delightful Formulas

大概就是照着题解抄了一遍吧,这道题太神仙了……

ai=ik,si=∑j=1iajcalc∑i=1nsi[gcd⁡(i,n)=1]∑d∣nμ(d)∑i=1ndsida_i = i ^ k, s_i = \sum_{j = 1} ^{i} a_j\\ calc\ \sum_{i = 1} ^{n} s_i[\gcd(i, n) = 1]\\ \sum_{d \mid n} \mu(d) \sum_{i = 1} ^{\frac{n}{d}} s_{id}\\ ai​=ik,si​=j=1∑i​aj​calc i=1∑n​si​[gcd(i,n)=1]d∣n∑​μ(d)i=1∑dn​​sid​

伯努利数对自然幂次求和有:
Sk(n)=∑i=0nik=1k+1∑i=0kCk+1iBi(n+1)k+i−1不难发现其为一个k+1阶多项式,设Sk(x)=∑i=0k+1aixiSk(n)=1k+1∑i=1k+1Ck+1iBk+1−i(n+1)i1k+1∑i=0k+1Ck+1iBk+1−i(n+1)i−1k+1Bk+11k+1∑i=0k+1Ck+1iBk+1−i∑j=0iCijnj−1k+1Bk+11k+1∑j=0k+1nj∑i=jk+1Ck+1iBk+1−iCij−1k+1Bk+1S_k(n) = \sum_{i = 0} ^{n} i ^ k = \frac{1}{k + 1} \sum_{i = 0} ^{k}C_{k + 1} ^{i} B_i (n + 1) ^{k + i - 1}\\ 不难发现其为一个k + 1阶多项式,设S_k(x) = \sum_{i = 0} ^{k + 1} a_i x ^{i}\\ S_k(n) = \frac{1}{k + 1} \sum_{i = 1} ^{k + 1} C_{k + 1} ^{i} B_{k + 1 - i} (n + 1) ^{i}\\ \frac{1}{k + 1} \sum_{i = 0} ^{k + 1} C_{k + 1} ^{i} B_{k + 1 - i} (n + 1) ^{i} - \frac{1}{k + 1} B_{k + 1}\\ \frac{1}{k + 1} \sum_{i = 0} ^{k + 1} C_{k + 1} ^{i} B_{k + 1 - i} \sum_{j = 0} ^{i} C_{i} ^{j} n ^j - \frac{1}{k + 1} B_{k + 1}\\ \frac{1}{k + 1} \sum_{j = 0} ^{k + 1} n ^ j \sum_{i = j} ^{k + 1} C_{k + 1} ^{i} B_{k + 1 - i} C_i ^ j - \frac{1}{k + 1} B_{k + 1}\\ Sk​(n)=i=0∑n​ik=k+11​i=0∑k​Ck+1i​Bi​(n+1)k+i−1不难发现其为一个k+1阶多项式,设Sk​(x)=i=0∑k+1​ai​xiSk​(n)=k+11​i=1∑k+1​Ck+1i​Bk+1−i​(n+1)ik+11​i=0∑k+1​Ck+1i​Bk+1−i​(n+1)i−k+11​Bk+1​k+11​i=0∑k+1​Ck+1i​Bk+1−i​j=0∑i​Cij​nj−k+11​Bk+1​k+11​j=0∑k+1​nji=j∑k+1​Ck+1i​Bk+1−i​Cij​−k+11​Bk+1​
有a0=0,j≥1a_0 = 0, j \geq 1a0​=0,j≥1时有:
1k+1∑i=jk+1Ck+1iBk+1−iCij1k+1∑i=0k+1−jck+1iBiCk+1−ij1k+1∑i=0k+1−j(k+1)!i!(k+1−i)!(k+1−i)!j!(k+1−i−j)!Bi1k+1∑i=0k+1−j(k+1)!(k+1−j)!i!(k+1−j)!j!(k+1−i−j)!Bi1k+1∑i=0k+1−jCk+1−jiCk+1jBi1k+1Ck+1j∑i=0k+1−jCk+1−jiBi1k+1Ck+1j(∑i=0k−jCk−j+1iBi+Bk+1−j)有∑i=0kCk+1iBi=0,k≥1上式子为1k+1Ck+1jBk+1−j\frac{1}{k + 1} \sum_{i = j} ^{k + 1} C_{k + 1} ^{i} B_{k + 1 - i} C_{i} ^ {j}\\ \frac{1}{k + 1} \sum_{i = 0} ^{k + 1 - j}c_{k + 1} ^{i} B_{i} C_{k + 1 - i} ^{j}\\ \frac{1}{k + 1} \sum_{i = 0} ^{k + 1 - j} \frac{(k + 1)!}{i!(k + 1 - i)!} \frac{(k + 1 - i)!}{j! (k + 1 -i - j)!} B_i\\ \frac{1}{k + 1} \sum_{i = 0} ^{k + 1 - j} \frac{(k + 1)! (k + 1 - j)!}{i!(k + 1 - j)!j!(k + 1 - i - j)!} B_i\\ \frac{1}{k + 1} \sum_{i = 0} ^{k + 1 - j} C_{k + 1 - j} ^{i} C_{k + 1} ^{j} B_i\\ \frac{1}{k + 1} C_{k + 1} ^{j} \sum_{i = 0} ^{k + 1 - j} C_{k + 1 - j} ^{i} B_i\\ \frac{1}{k + 1} C_{k + 1} ^{j}\left(\sum_{i = 0} ^{k - j} C_{k - j + 1} ^{i} B_i + B_{k + 1 - j}\right)\\ 有\sum_{i = 0} ^{k} C_{k + 1} ^{i} B_i = 0, k \geq 1\\ 上式子为\frac{1}{k + 1} C_{k + 1} ^{j} B_{k + 1 - j}\\ k+11​i=j∑k+1​Ck+1i​Bk+1−i​Cij​k+11​i=0∑k+1−j​ck+1i​Bi​Ck+1−ij​k+11​i=0∑k+1−j​i!(k+1−i)!(k+1)!​j!(k+1−i−j)!(k+1−i)!​Bi​k+11​i=0∑k+1−j​i!(k+1−j)!j!(k+1−i−j)!(k+1)!(k+1−j)!​Bi​k+11​i=0∑k+1−j​Ck+1−ji​Ck+1j​Bi​k+11​Ck+1j​i=0∑k+1−j​Ck+1−ji​Bi​k+11​Ck+1j​(i=0∑k−j​Ck−j+1i​Bi​+Bk+1−j​)有i=0∑k​Ck+1i​Bi​=0,k≥1上式子为k+11​Ck+1j​Bk+1−j​
综上有:
{a0=0ai=1k+1Ck+1iBk+1−i1≤i<kak=B1+B0ak+1=1k+1\left\{ \begin{aligned} a_0 & = 0\\ a_i & = \frac{1}{k + 1}C_{k + 1} ^{i} B_{k + 1 - i} & 1 \leq i < k\\ a_k & = B_1 + B_0 \\ a_{k + 1} & = \frac{1}{k + 1}\\ \end{aligned} \right. ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧​a0​ai​ak​ak+1​​=0=k+11​Ck+1i​Bk+1−i​=B1​+B0​=k+11​​1≤i<k

再考虑对原式化简:

ak,ja_{k, j}ak,j​为kkk次自然数幂之和的多项式的第jjj项,也就是上面化简的。
∑d∣nμ(d)∑i=1ndsid∑d∣nμ(d)∑i=1nd∑j=0k+1ak,jijdj∑j=0k+1ak,j∑d∣nμ(d)dj∑i=1ndij∑j=0k+1ak,j∑d∣nμ(d)dj∑i=0j+1aj,inid−i∑d∣nμ(d)∑i=−1k+1di∑x=0k+1∑y=0k+1[x−y=i]ak,xax,yny∑d∣nμ(d)∑i=−1k+1diFi+1∑i=−1k+1Fi+1∑d∣nμ(d)di\sum_{d \mid n} \mu(d) \sum_{i = 1} ^{\frac{n}{d}} s_{id}\\ \sum_{d \mid n} \mu(d) \sum_{i = 1} ^{\frac{n}{d}} \sum_{j = 0} ^{k + 1} a_{k, j} i ^{j} d ^{j}\\ \sum_{j = 0} ^{k + 1} a_{k, j} \sum_{d \mid n} \mu(d) d ^ j \sum_{i = 1} ^{\frac{n}{d}} i ^ j\\ \sum_{j = 0} ^{k + 1} a_{k, j} \sum_{d \mid n} \mu(d) d ^ j \sum_{i = 0} ^{j + 1} a_{j, i} n ^{i} d ^{-i}\\ \sum_{d \mid n} \mu(d) \sum_{i = -1} ^{k + 1} d ^{i} \sum_{x = 0} ^{k + 1} \sum_{y = 0} ^{k + 1}[x - y = i] a_{k, x}a_{x, y}n ^{y}\\ \sum_{d \mid n} \mu(d) \sum_{i = -1} ^{k + 1} d ^{i} F_{i + 1}\\ \sum_{i = -1} ^{k + 1} F_{i + 1} \sum_{d \mid n} \mu(d) d ^{i}\\ d∣n∑​μ(d)i=1∑dn​​sid​d∣n∑​μ(d)i=1∑dn​​j=0∑k+1​ak,j​ijdjj=0∑k+1​ak,j​d∣n∑​μ(d)dji=1∑dn​​ijj=0∑k+1​ak,j​d∣n∑​μ(d)dji=0∑j+1​aj,i​nid−id∣n∑​μ(d)i=−1∑k+1​dix=0∑k+1​y=0∑k+1​[x−y=i]ak,x​ax,y​nyd∣n∑​μ(d)i=−1∑k+1​diFi+1​i=−1∑k+1​Fi+1​d∣n∑​μ(d)di

对f(n)=∑d∣nμ(d)dif(n) = \sum\limits_{d \mid n} \mu(d) d ^ if(n)=d∣n∑​μ(d)di,考虑其积性f(1)=1,f(p)=μ(1)+μ(p)pi=1−pi,f(pk)=f(p)f(1) = 1, f(p) = \mu(1) + \mu(p) p ^ i = 1 - p ^ i, f(p ^ k) =f(p)f(1)=1,f(p)=μ(1)+μ(p)pi=1−pi,f(pk)=f(p),

所以答案为∑i=−1k+1Fi+1∑d∣nμ(d)di\sum\limits_{i = -1} ^{k + 1} F_{i + 1} \sum\limits_{d \mid n} \mu(d) d ^ ii=−1∑k+1​Fi+1​d∣n∑​μ(d)di,考虑如何求解Fi+1F_{i + 1}Fi+1​。
Fi=∑x=0k+1∑y=0k+1[x−y=i−1]ak,xax,yny∑x=0k+1ak,xax,x−i+1nx−i+1∑x=1k+1ak,xax,x−i+1nx−i+1∑x=0kak,x+1,ax+1,x−i+2nx−i+2∑x=0k1k+1Ck+1x+1Bk−x1x+2Cx+2iBinx−i+2∑x=0k1k+1(k+1)!(x+1)!(k−x)!Bk−x1x+2(x+2)!i!(x+2−i)!Binx−i+2k!Bii!∑x=0kBk−x(k−x)!nx−i+2(x−i+2)!F_i = \sum\limits_{x = 0} ^{k + 1} \sum\limits_{y = 0} ^{k + 1}[x - y = i - 1] a_{k, x}a_{x, y} n ^ y\\ \sum_{x = 0} ^{k + 1} a_{k, x} a_{x, x - i + 1} n ^{x - i + 1}\\ \sum_{x = 1} ^{k + 1} a_{k, x} a_{x, x - i + 1} n ^{x - i + 1}\\ \sum_{x = 0} ^{k} a_{k, x + 1}, a_{x + 1, x - i + 2} n ^{x - i + 2}\\ \sum_{x = 0} ^{k} \frac{1}{k + 1}C_{k + 1} ^{x + 1} B_{k - x} \frac{1}{x + 2} C_{x + 2} ^{i} B_{i} n ^{x - i + 2}\\ \sum_{x = 0} ^{k} \frac{1}{k + 1} \frac{(k + 1)!}{(x + 1)!(k - x)!} B_{k - x} \frac{1}{x + 2} \frac{(x + 2)!}{i!(x + 2 - i)!} B_i n ^{x - i + 2}\\ \frac{k! B_i}{i!} \sum_{x = 0} ^{k} \frac{B_{k - x}}{(k - x)!} \frac{n ^{x - i + 2}}{(x - i + 2)!}\\ Fi​=x=0∑k+1​y=0∑k+1​[x−y=i−1]ak,x​ax,y​nyx=0∑k+1​ak,x​ax,x−i+1​nx−i+1x=1∑k+1​ak,x​ax,x−i+1​nx−i+1x=0∑k​ak,x+1​,ax+1,x−i+2​nx−i+2x=0∑k​k+11​Ck+1x+1​Bk−x​x+21​Cx+2i​Bi​nx−i+2x=0∑k​k+11​(x+1)!(k−x)!(k+1)!​Bk−x​x+21​i!(x+2−i)!(x+2)!​Bi​nx−i+2i!k!Bi​​x=0∑k​(k−x)!Bk−x​​(x−i+2)!nx−i+2​

由此我们得到一个卷积得形式,可O(klog⁡k)O(k \log k)O(klogk)求解。

#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10, mod = 998244353;int r[N], t[N], B[N], b[N], fac[N], ifac[N];int quick_pow(int a, int n) {int ans = 1;while (n) {if (n & 1) {ans = 1ll * a * ans % mod;}a = 1ll * a * a % mod;n >>= 1;}return ans;
}void get_r(int lim) {for (int i = 0; i < lim; i++) {r[i] = (i & 1) * (lim >> 1) + (r[i >> 1] >> 1);}
}void NTT(int *f, int lim, int rev) {for (int i = 0; i < lim; i++) {if (i < r[i]) {swap(f[i], f[r[i]]);}}for (int mid = 1; mid < lim; mid <<= 1) {int wn = quick_pow(3, (mod - 1) / (mid << 1));for (int len = mid << 1, cur = 0; cur < lim; cur += len) {int w = 1;for (int k = 0; k < mid; k++, w = 1ll * w * wn % mod) {int x = f[cur + k], y = 1ll * w * f[cur + mid + k] % mod;f[cur + k] = (x + y) % mod, f[cur + mid + k] = (x - y + mod) % mod;}}}if (rev == -1) {int inv = quick_pow(lim, mod - 2);reverse(f + 1, f + lim);for (int i = 0; i < lim; i++) {f[i] = 1ll * f[i] * inv % mod;}}
}void polyinv(int *f, int *g, int n) {if (n == 1) {g[0] = quick_pow(f[0], mod - 2);return ;}polyinv(f, g, n + 1 >> 1);for (int i = 0; i < n; i++) {t[i] = f[i];}int lim = 1;while (lim < 2 * n) {lim <<= 1;}get_r(lim);NTT(t, lim, 1);NTT(g, lim, 1);for (int i = 0; i < lim; i++) {int cur = (2 - 1ll * g[i] * t[i] % mod + mod) % mod;g[i] = 1ll * g[i] * cur % mod;t[i] = 0;}NTT(g, lim, -1);for (int i = n; i < lim; i++) {g[i] = 0;}
}void init() {fac[0] = 1;for (int i = 1; i < N; i++) {fac[i] = 1ll * fac[i - 1] * i % mod;}ifac[N - 1] = quick_pow(fac[N - 1], mod - 2);for (int i = N - 2; i >= 0; i--) {ifac[i] = 1ll * ifac[i + 1] * (i + 1) % mod;}int n = 1e5 + 10, len = 1;for (int i = 0; i < n; i++) {B[i] = ifac[i + 1];}polyinv(B, b, n);for (int i = 0; i < n; i++) {B[i] = 1ll * b[i] * fac[i] % mod;b[i] = 0;}B[1] = mod - B[1];
}int k, m, n, a[N], num[N], c[N], d[N], pw[N];void polymult(int *a, int n, int *b, int m) {int lim = 1;while (lim < n + m) {lim <<= 1;}get_r(lim);for (int i = n; i < lim; i++) {a[i] = 0;}for (int i = m; i < lim; i++) {b[i] = 0;}NTT(a, lim, 1), NTT(b, lim, 1);for (int i = 0; i < lim; i++) {a[i] = 1ll * a[i] * b[i] % mod;}NTT(a, lim, -1);
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();int T;scanf("%d", &T);while (T--) {scanf("%d %d", &k, &m);n = 1;for (int i = 1; i <= m; i++) {scanf("%d %d", &a[i], &num[i]);n = 1ll * n * quick_pow(a[i], num[i]) % mod;}int lim = 1;while (lim < k * 2 + 10) {lim <<= 1;}for (int i = 0; i <= lim; i++) {c[i] = d[i] = 0;}for (int i = 0; i <= k; i++) {c[k + 1 - i] = 1ll * fac[k] * ifac[i] % mod * B[i] % mod;}int pow = 1;for (int i = 1; i <= k + 2; i++) {pow = 1ll * pow * n % mod;d[k + 2 - i] = 1ll * pow * ifac[i] % mod;}polymult(c, lim, d, lim);for (int i = 1; i <= m; i++) {pw[i] = quick_pow(a[i], mod - 2);}int ans = 0;for (int d = -1; d <= k; d++) {int gg = 1ll * c[d + k + 2] * B[d + 1] % mod * ifac[d + 1] % mod;for (int i = 1; i <= m; i++) {gg = 1ll * gg * (1 - pw[i] + mod) % mod;pw[i] = 1ll * pw[i] * a[i] % mod;}ans = (ans + gg) % mod;}printf("%d\n", ans);}return 0;
}

HDU 6340 Problem I. Delightful Formulas(伯努利数 + 积性函数反演)相关推荐

  1. POJ-2480 Longge's problem 积性函数

    题目链接:http://poj.org/problem?id=2480 题意:多次求sigma(gcd(i,n), 1<=i<=n<2^32) 这题不能直接搜了,需要考虑函数的性质. ...

  2. POJ 2480 Longge#39;s problem 积性函数

    题目来源:POJ 2480 Longge's problem 题意:求i从1到n的gcd(n, i)的和 思路:首先假设m, n 互质 gcd(i, n*m) = gcd(i, n)*gcd(i, m ...

  3. HDU 6134 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)

    实在太长了直接放题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6134 这题就是求 考虑当Gcd(i, j)==1时,除了j为1的情况,其它时候i/j一 ...

  4. CCPC-2017 杭州站B丨HDU - 6265丨数论丨积性函数 丨欧拉函数丨狄利克雷卷积丨思维变换

    [参考博客]@WJHKDGHP ccpc2017杭州站 B [参考博客]@灬从此以后灬 2017 CCPC 杭州 HDU6265B 积性函数 特别感谢以上两位博主,让我看懂了许多细节. 交题网址(HD ...

  5. 《算法竞赛中的初等数论》(三)正文 0x30 积性函数(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  6. 【数学专题】莫比乌斯反演与积性函数

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的模板整合计划 目录 莫比乌斯反演 AcWing 2702. problem b AcWing 1358. 约数个数和(莫 ...

  7. 浅谈积性函数求前缀和

    转载至https://blog.csdn.net/skywalkert/article/details/50500009 前置技能 积性函数的定义 若f(n)f(n)的定义域为正整数域,值域为复数,即 ...

  8. 2018ACM-ICPC南京赛区网络赛: J. Sum(积性函数前缀和)

    J. Sum A square-free integer is an integer which is indivisible by any square number except 11. For ...

  9. 积性函数性质-POJ2480

    https://vj.xtuacm.cf/contest/view.action?cid=146#problem/D 参考:http://www.cnblogs.com/xiaowuga/p/7161 ...

最新文章

  1. 比特币ABC推出最新版本后讨论网络不兼容性
  2. via浏览器下载路径_Via - 能够安装脚本插件的安卓浏览器
  3. **Java有哪些悲观锁的实现_80% 人不知道的 Redis 分布式锁的正确实现方式(Java 版)...
  4. python 内置函数__name__的作用
  5. spring boot 整合redis实现session共享
  6. xxxx must either be declared abstract or implement abstract method ‘map(T)‘ in ‘MapFunction‘
  7. 00004-括号匹配问题-牛客网-要考虑各种情况
  8. xml引入约束示例(xsd文件)
  9. 切片 里面包含interface_Golang的数组和切片
  10. 用python语言写一个简单的计算器
  11. scoope导入数据_scoop导入数据从mysql到hive
  12. LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
  13. Zuul使用Ribbon配置自动重试
  14. win10 专业版安装系统
  15. dockerfile
  16. 计算机网络:数字签名与数字证书
  17. Kaggle项目之Mobile App Store
  18. “第五空间”智能安全大赛部分WP
  19. python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
  20. Oracle查看表触发器

热门文章

  1. 面对焦虑,我们能做什么?
  2. 可以自发热的袜子,穿上暖3.9℃,这个冬天不再怕脚冷!
  3. 每日一笑 | 对不起,我还没下班...
  4. 世界头号毒枭古斯曼被捕,全因被内部IT男出卖!
  5. 想入门平均月薪2.58w人工智能领域?看看BAT的工程师在学什么
  6. 老板啥都懂,还天天套路我?!
  7. 2017新生儿爆款名字出炉!90后的父母们最受欢迎的居然是.....
  8. 提升树算法总结(一)
  9. mysql 1054 42s22_MySQL ERROR 1054(42S22)
  10. mysql老叶博客_MySQL binlog后面的编号最大是多大?【老叶茶馆公众号】