Time:2016.05.27
Author:xiaoyimi
转载注明出处谢谢


传送门
思路:
∑di=c∑bj=a[gcd(i,j)=k]∑^{d}_{i=c}∑^{b}_{j=a}[gcd(i,j)=k]

=∑di=1∑bj=1[gcd(i,j)=k]−∑c−1i=1∑bj=1[gcd(i,j)=k]−∑di=1∑a−1j=1[gcd(i,j)=k]+∑c−1i=1∑a−1j=1[gcd(i,j)=k]=∑^{d}_{i=1}∑^{b}_{j=1}[gcd(i,j)=k]-∑^{c-1}_{i=1}∑^{b}_{j=1}[gcd(i,j)=k]-∑^{d}_{i=1}∑^{a-1}_{j=1}[gcd(i,j)=k]+∑^{c-1}_{i=1}∑^{a-1}_{j=1}[gcd(i,j)=k]

可以观察到上面这四个式子都是类似的,我们只用处理一个就好
这里选用
∑di=1∑bj=1[gcd(i,j)=k]∑^{d}_{i=1}∑^{b}_{j=1}[gcd(i,j)=k]

令i=ki,j=kji=ki,j=kj

=∑⌊dk⌋i=1∑⌊bk⌋j=1[gcd(i,j)=1]=∑^{⌊\frac d k⌋}_{i=1}∑^{⌊\frac b k⌋}_{j=1}[gcd(i,j)=1]

=∑⌊dk⌋i=1∑⌊bk⌋j=1∑p|gcd(i,j)μ(p)=∑^{⌊\frac d k⌋}_{i=1}∑^{⌊\frac b k⌋}_{j=1}∑_{p|gcd(i,j)}μ(p)

设b<=d,a<=cb

=∑⌊dk⌋i=1∑⌊bk⌋j=1∑[p|i][p|j]μ(p)=∑^{⌊\frac d k⌋}_{i=1}∑^{⌊\frac b k⌋}_{j=1}∑_{[p|i][p|j]}μ(p)

=∑⌊bk⌋p=1⌊bpk⌋⌊dpk⌋μ(p)=∑_{p=1}^{⌊\frac b k⌋}⌊\frac b {pk}⌋⌊\frac d {pk}⌋μ(p)

μ可以前缀和处理,然后⌊bpk⌋⌊dpk⌋⌊\frac b {pk}⌋⌊\frac d {pk}⌋的取值只有n√\sqrt n个,每次O(nn√)O(n\sqrt n)分块处理,总复杂度O(nn√)O(n\sqrt n)
注意:
1.实测不用开long long
2.推式子一定要细心,我刚开始就推错了好几次,尤其是分别处理4个式子,并且搞混了abcd……
3.好久不碰数论,欧拉筛都不会了……
代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#define M 50004
using namespace std;
int n,a,b,c,d,k;
int mu[M],prime[M];
bool vis[M];
int in()
{char ch=getchar();int t=0;while (!isdigit(ch)) ch=getchar();while (isdigit(ch)) t=(t<<3)+(t<<1)+ch-48,ch=getchar();return t;
}
int solve(int x,int y)
{if (x>y) swap(x,y);int ans=0,last;for (int i=1;i<=x;i=last+1){last=min(x/(x/i),y/(y/i));ans+=(mu[last]-mu[i-1])*(x/i)*(y/i);}return ans;
}
main()
{mu[1]=1;for (int i=2;i<=50000;i++){if (!vis[i])prime[++prime[0]]=i,mu[i]=-1;for (int j=1;j<=prime[0];j++)if (prime[j]*i>50000) break;else{vis[i*prime[j]]=1;if (i%prime[j])mu[i*prime[j]]=-mu[i];else{mu[i*prime[j]]=0;break;}}}for (int i=2;i<=50000;i++) mu[i]+=mu[i-1];n=in();while (n--){a=in()-1;b=in();c=in()-1;d=in();k=in();a/=k;b/=k;c/=k;d/=k;printf("%d\n",solve(b,d)-solve(b,c)-solve(d,a)+solve(a,c)); }
}

【BZOJ2301】problem b,数论之莫比乌斯反演相关推荐

  1. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...

  2. 数论变换 - 莫比乌斯反演篇

    2020.8.17 今天第一次屁股坐在椅子上学莫比乌斯反演的一天.本来是想让队友学的,现在队友不知道换了多少人了,也没几个真的能靠得住的,还都得看自己.其实学到现在这个程度,除了一些极其吃天赋的问题, ...

  3. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演 + 伯努利数)

    P6271 [湖北省队互测2014]一个人的数论 ∑i=1nim[gcd⁡(i,n)=1]∑d∣nμ(d)dm∑i=1ndim由伯努利数可知∑i=0nim=1m+1∑i=0mCm+1iBi(n+1)m ...

  4. 【codevs4355】王的对决(简单数论) 莫比乌斯反演

    题目描述 Description /*在神秘而遥远的T国度生活着一群神奇的物种--DD! DD们有着独特的生活习惯,他们总是喜欢居住在tree上,而且只有上层住了DD下层才能再住.并且每层住的DD最多 ...

  5. 【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)

    题解: (吐槽:网上题解那个不严谨猜测真是没谁了--关键是还猜得辣么准--) 直接化简到求和那一段: $f_{d}(n)=\sum_{t|n}\mu(t)t^{d}\sum_{i=1}^{\frac{ ...

  6. 【BZOJ3601】一个人的数论,莫比乌斯反演+高斯消元

    Time:2016.08.18 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 真是太神了 我要能写出来一半,我就-- 希望明年的自己能独立做出来 大犇博客 代码: #include ...

  7. 关于数论【莫比乌斯反演】

    由于这个证明过程太过长...推荐大家看这个大佬的博文,我就是看这个学会的 http://www.cnblogs.com/chenyang920/p/4811995.html 原式 : G(n)=sig ...

  8. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 4032  Solved: 1817 [Submi ...

  9. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)

    BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块) 手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csd ...

最新文章

  1. python Demo 01 爬取大学名称
  2. 12c oracle 修改内存_关于Oracle数据库12c 新特性总结
  3. 在JavaFX程序中嵌入Swing内容
  4. 手机MMI体系结构及其实现
  5. php-cli下载,php-cli-color
  6. 武侠乂怎么修改服务器,武侠乂怎么操作 按键功能详细介绍
  7. 安卓学习笔记25:常用控件 - 下拉列表
  8. unique去除重复的向量_R语言向量与因子
  9. 单例模式、使用getInstance()方法的原因及作用
  10. 铺铜规则在哪设定_干货丨PCB layout结合生产设计必须遵循这六大规则!
  11. C# 电子白板软件开发
  12. 【2014.01】普林斯顿数学指南(第一卷) [英]Timothy Gowers编 齐民友译
  13. 用Python爬取漫画并转换格式为pdf和mobi
  14. Java基础入门及安装准备
  15. 每天学命令get_propertysi_attacker Properties
  16. python数据可视化学习之随机漫步
  17. 第一代程序员王小波,逝世 25 周年
  18. python在abaqus中的应用pdf_Python语言在Abaqus中的应用
  19. 设计师必备!免费下载 PSD 素材的32个网站
  20. 《人力资源视角下的企业数字化转型》高峰圆桌论坛圆满闭幕

热门文章

  1. 补习系列(20)-大话 WebSocket 与 尬聊的实现
  2. kohana php,[php框架]kohana中文译本.pdf
  3. C++知识点 多态、静态多态、动态多态
  4. 关于Word2016敲入公式的新方法
  5. 高等组合学笔记(六): 第二类Stirling数,第一类Stirling数以及生成函数
  6. 一分钟教你在PyTorch跑模型的时候提取中间层查看图片
  7. 运行opencv保存视频时出现错误的解决方法
  8. RDD Join 性能调优
  9. 简单版---JS获得某天是一年当中的第几天
  10. react更改路由入参_react路由传参方式