f(x)f(x)f(x)表示xxx的次大约数,有f(x)=xx的最小质因数f(x)=\frac{x}{x的最小质因数}f(x)=x的最小质因数x​,那么

∑i=1n∑j=1nsgcd(i,j)k=∑i=1n∑j=1nf(gcd(i,j))k=∑d=1nf(d)k∑i=1n∑j=1n[gcd(i,j)=d]=∑d=1nf(d)k∑i=1⌊nd⌋∑j=1⌊nd⌋[gcd(i,j)=1]=∑d=1nf(d)k⋅(2∑i=1⌊nd⌋φ(i)−1)\begin{aligned} \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}sgcd(i,j)^k&=\sum\limits_{i=1}^n\sum\limits_{j=1}^{n}f(gcd(i,j))^k\\ &=\sum\limits_{d=1}^{n}f(d)^k\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[gcd(i,j)=d]\\ &=\sum\limits_{d=1}^{n}f(d)^k\sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{n}{d}\rfloor}[gcd(i,j)=1]\\ &=\sum\limits_{d=1}^{n}f(d)^k\cdot(2\sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor}\varphi(i)-1) \end{aligned}i=1∑n​j=1∑n​sgcd(i,j)k​=i=1∑n​j=1∑n​f(gcd(i,j))k=d=1∑n​f(d)ki=1∑n​j=1∑n​[gcd(i,j)=d]=d=1∑n​f(d)ki=1∑⌊dn​⌋​j=1∑⌊dn​⌋​[gcd(i,j)=1]=d=1∑n​f(d)k⋅(2i=1∑⌊dn​⌋​φ(i)−1)​
(倒数第二步到最后一步是直接由ϕϕϕ的定义得到的)

2∑i=1⌊nd⌋φ(i)−12\sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor}\varphi(i)-12i=1∑⌊dn​⌋​φ(i)−1是经典的杜教筛求欧拉函数前缀和,
然后因为iii的上界是⌊nd⌋\lfloor\frac{n}{d}\rfloor⌊dn​⌋所以求出前缀和以后分块搞一波就好了

∑d=1nf(d)k\sum\limits_{d=1}^{n}f(d)^kd=1∑n​f(d)k的求法则非常神仙(%%%网上的大佬):

∑d=1nf(d)k\sum\limits_{d=1}^{n}f(d)^kd=1∑n​f(d)k
=∑d=2nf(d)k[d是质数]+∑d=2nf(d)k[d是合数]+f(1)k=\sum\limits_{d=2}^{n}f(d)^k[d是质数]+\sum\limits_{d=2}^{n}f(d)^k[d是合数]+f(1)^k=d=2∑n​f(d)k[d是质数]+d=2∑n​f(d)k[d是合数]+f(1)k
=∑d=2n[d是质数]+∑d=2n(dd的最小质因数)k[d是合数]=\sum\limits_{d=2}^{n}[d是质数]+\sum\limits_{d=2}^{n}(\frac{d}{d的最小质因数})^k[d是合数]=d=2∑n​[d是质数]+d=2∑n​(d的最小质因数d​)k[d是合数]

∑d=2n[d是质数]\sum\limits_{d=2}^{n}[d是质数]d=2∑n​[d是质数]即为nnn以内质数个数,可以用min_25筛出来,接下来只需考虑ddd是合数的部分

回忆min_25筛,
设g(n,j)=∑i=1nik[i∈Pori的最小质因数>Pj]g(n,j)=\sum_{i=1}^ni^k[i\in P\ \ or \ \ i的最小质因数>P_j ]g(n,j)=∑i=1n​ik[i∈P  or  i的最小质因数>Pj​],则
当Pj2≤nP_j^2\leq nPj2​≤n时,
g(n,j)=g(n,j−1)−∑[i的最小质因数=Pj]ikg(n,j)=g(n,j-1)-\sum[i的最小质因数=P_j]i^kg(n,j)=g(n,j−1)−∑[i的最小质因数=Pj​]ik
=g(n,j−1)−Pjk∑[i的最小质因数=Pj](iPj)k=g(n,j-1)-P_j^k\sum[i的最小质因数=P_j](\frac{i}{P_j})^k=g(n,j−1)−Pjk​∑[i的最小质因数=Pj​](Pj​i​)k
=g(n,j−1)−Pjk∑l=Pj⌊nPj⌋[l的最小质因数>Pj−1]lk=g(n,j-1)-P_j^k\sum_{l=P_j}^{\lfloor\frac{n}{P_j}\rfloor}[l的最小质因数>P_{j-1}]l^k=g(n,j−1)−Pjk​∑l=Pj​⌊Pj​n​⌋​[l的最小质因数>Pj−1​]lk
=g(n,j−1)−Pjk[g(⌊nPj⌋,j−1)−g(Pj−1,j−1)]=g(n,j-1)-P_j^k[g(\lfloor\frac{n}{P_j}\rfloor,j-1)-g(P_j-1,j-1)]=g(n,j−1)−Pjk​[g(⌊Pj​n​⌋,j−1)−g(Pj​−1,j−1)]

我们发现g(⌊nPj⌋,j−1)−g(Pj−1,j−1)g(\lfloor\frac{n}{P_j}\rfloor,j-1)-g(P_j-1,j-1)g(⌊Pj​n​⌋,j−1)−g(Pj​−1,j−1)
即为∑i=1n[i的最小质因数=Pj](iPj)k\sum_{i=1}^{n}[i的最小质因数=P_j](\frac{i}{P_j})^k∑i=1n​[i的最小质因数=Pj​](Pj​i​)k
所以∑j=1∣P∣g(⌊nPj⌋,j−1)−g(Pj−1,j−1)\sum_{j=1}^{|P|}g(\lfloor\frac{n}{P_j}\rfloor,j-1)-g(P_j-1,j-1)∑j=1∣P∣​g(⌊Pj​n​⌋,j−1)−g(Pj​−1,j−1)
=∑j=1∣P∣∑i=1n[i的最小质因数=Pj](iPj)k=\sum_{j=1}^{|P|}\sum_{i=1}^{n}[i的最小质因数=P_j](\frac{i}{P_j})^k=∑j=1∣P∣​∑i=1n​[i的最小质因数=Pj​](Pj​i​)k
=∑i=2n(ii的最小质因数)k=\sum_{i=2}^{n}(\frac{i}{i的最小质因数})^k=∑i=2n​(i的最小质因数i​)k

最后,算g(n,0)g(n,0)g(n,0)要快速求∑i=1nik\sum_{i=1}^{n}i^k∑i=1n​ik,这里要用第二类斯特林数处理一下:
∑i=1nik\sum_{i=1}^{n}i^k∑i=1n​ik
=∑i=1n∑j=1k{jk}ij‾=\sum_{i=1}^{n}\sum_{j=1}^{k}\{_j^k\}i^{\underline{j}}=∑i=1n​∑j=1k​{jk​}ij​
=∑j=1k{jk}∑i=1nij‾=\sum_{j=1}^{k}\{_j^k\}\sum_{i=1}^{n}i^{\underline j}=∑j=1k​{jk​}∑i=1n​ij​
=∑j=1k{jk}(n+1)j+1‾j+1=\sum_{j=1}^{k}\{_j^k\}\frac{(n+1)^{\underline{j+1}}}{j+1}=∑j=1k​{jk​}j+1(n+1)j+1​​

实现细节:
1、取模的话可以自然溢出,unsignedintunsigned\ intunsigned int了解一下ovo

2、求下降阶乘幂的时候,因为这题的模数不是质数,所以不能快乐求逆元,但是因为kkk比较小所以直接暴力一波,一个一个数乘,这堆数中必定有一个是j+1j+1j+1的倍数,所以可以直接先除再乘就好了,注意判断的时候每次都取模判断的话会愉快T掉,所以应该在一开始的时候先把余数算出来,然后根据余数的加法定理直接判就好了

参考博客:https://www.cnblogs.com/yoyoball/p/9204846.html

[51NOD1847]奇怪的数学题(杜教筛+min_25筛+第二类斯特林数)相关推荐

  1. 1847 奇怪的数学题(杜教筛 + Min_25 + 第二类斯特林数)

    1847 奇怪的数学题 推式子 ∑i=1n∑j=1nsgcd(i,j)k∑d=1nsgcd(d)k∑i=1nd∑j=1nd[gcd(i,j)=1]∑d=1nsgcd(d)k(2∑i=1ndϕ(i)−1 ...

  2. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  3. 【LOJ#572】Misaka Network 与求和(莫比乌斯反演/杜教筛/min_25筛)

    [LOJ#572]Misaka Network 与求和 https://www.cnblogs.com/cjyyb/p/10170630.html 看到次大质因子就可以想到是min_25筛了,然后只需 ...

  4. Loj #572. 「LibreOJ Round #11」Misaka Network 与求和(莫比乌斯反演 + 杜教筛 + min_25筛(递推版))

    直接反演一下:∑i=1n∑i=1nf(gcd(i,j))k\sum_{i = 1}^n\sum_{i = 1}^nf(gcd(i,j))^ki=1∑n​i=1∑n​f(gcd(i,j))k=∑d=1n ...

  5. 51nod 1847 奇怪的数学题(数论/min25筛/杜教筛/斯特林数)

    51nod 1847 奇怪的数学题 求解∑i=1n∑j=1nsgcd(i,j),sgcd\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j),sgcd∑i=1n​∑j=1n​sgcd(i ...

  6. 洲阁筛/Min25筛

    1:完整的Min25筛学习方案 2:虽然不是但我也挂 3:网上捞了好久才捞到的纯递推写法Min25筛 终于看懂了..... 就是充分利用合数一定有小于等于n\sqrt nn​的质因子和积性函数的性质来 ...

  7. 「LibreOJ Round #11」Misaka Network 与求和(杜教筛 + Min_25)

    #572. 「LibreOJ Round #11」Misaka Network 与求和 推式子 ∑i=1n∑j=1nf(gcd(i,j))k∑d=1nf(d)k∑i=1nd∑j=1nd[gcd(i,j ...

  8. HDU 6607 Easy Math Problem(杜教筛 + min_25 + 拉格朗日插值)

    Easy Math Problem 推式子 ∑i=1n∑j=1ngcd(i,j)Klcm(i,j)[gcd(i,j)∈prime]∑i=1n∑j=1ngcd(i,j)K−1ij[gcd(i,j)∈pr ...

  9. #6229. 这是一道简单的数学题(反演 + 杜教筛)

    #6229. 这是一道简单的数学题 推式子 ∑i=1n∑j=1ilcm(i,j)gcd(i,j)=(∑i=1n∑j=1nlcm(i,j)gcd(i,j)+n)∗inv2所以重点求∑i=1n∑j=1nl ...

最新文章

  1. 读《编程之道》-对于程序员的抽象描述
  2. 最小化安装时没有ifconfig命令,没有firewalld.service
  3. 使用Idea从github上获取项目
  4. 20165332第八周课下作业
  5. 安全基础知识 最强0到33600端口详解(5)
  6. (05)Verilog HDL时序逻辑:always
  7. Apache Storm技术实战之3 -- TridentWordCount
  8. 动态添加上传控件,并上传文件
  9. [指导]HP ProBook/EliteBook/Zbook系列笔记本clover安装黑苹果
  10. imagej得到灰度图数据_Java图像处理最快技术:ImageJ 学习第一篇
  11. 制作u盘winpe启动盘_绿色、无捆绑的优启通U盘启动盘制作工具
  12. Abstraction Functions and Rep Invariants
  13. dump java崩溃自动 不生成_Java如何生成Heap Dump及OOM问题排查
  14. wps导航栏在哪设置?
  15. TP-LINK路由器如何设置上网
  16. FMC(FPGA Mezzanine card)连接器
  17. 搭建之星中文编程教学教程视频
  18. 老周的ABP框架系列教程
  19. SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
  20. 计算机应用技术:一、计算机应用基础问题

热门文章

  1. html5 获取文件属性,H5新属性--file文件读取
  2. grade项目导入新external libraries_【易推荐】德意志银行学院中国项目启动
  3. matlab feval 函数说明,Matlab feval函数
  4. [mybatis]缓存_二级缓存使用细节
  5. [Java基础]Junit测试
  6. C++实现井字棋小游戏(写得不好,留作纪念!!!)
  7. Stack(栈 c++模版实现)
  8. 唯品会php接口,唯品会链接生成联盟链接 - 唯品会API免费API接口-唯品会API开放API接口-云商数据(www.ecapi.cn)...
  9. 数据结构---邻接矩阵的DFS
  10. caffe/common.cu error: function atomicadd has already been defined