推出式子然后分块求和(还需使用一下容斥原理)。
分析:令f(n,m,i)表示在1<=x<=n,1<=y<=m,满足gcd(x,y)是i的(x,y)的对数。
ans=f(c,d,i)−f(a−1,d,i)−f(b,c−1,i)+f(a−1,c−1,i)其中1<=x<=n,1<=y<=m,满足gcd(x,y)是i的(x,y)的对数也等价于1<=x<=n/i,1<=y<=m/i时(x,y)互质(gcd(x,y)=1)的对数,即
f(n,m,i)=f(n/i,m/i,1)

令F(i)表示满足i|gcd(x,y)的(x,y)的对数。
可以得到一个显然的事实F(i)=⌊ni⌋⌊mi⌋。
根据莫比乌斯反演定理 (不会的可以去看看ACdreamer博客)
F(i)=∑i|df(d)=>f(i)=∑i|dμ(di)F(d)=∑i|dμ(di)⌊nd⌋⌊md⌋
后面O(√n)进行分块求和即可,此处不再赘述

/* ans=calc(b,d,k)-calc(a-1,d,k)-calc(c-1,b,k)+calc(a-1,c-1,k);
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=5e5+2;
int mu[MAXN],prime[MAXN],tot=0,a,b,c,d,k;
bool vis[MAXN];
inline void linear_shaker() {mu[1]=1;memset(vis,false,sizeof(vis));for (register int i=2;i<MAXN;++i) {if (!vis[i]) prime[++tot]=i,mu[i]=-1;for (int j=1;j<=tot&&i*prime[j]<MAXN;++j) {vis[i*prime[j]]=true;if (i%prime[j]==0) {mu[i*prime[j]]=0;break;}mu[i*prime[j]]=-mu[i];}}for (register int i=2;i<MAXN;++i) mu[i]+=mu[i-1];
}
inline int read() {int x=0;char c=getchar();while (c<'0'||c>'9') c=getchar();while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();return x;
}
inline ll cal(int n,int m) {int t=n>m?m:n,last;ll ret=0;for (int i=1;i<=t;i=last+1) {last=min(n/(n/i),m/(m/i));ret+=1ll*(mu[last]-mu[i-1])*(ll)(n/i)*(m/i);}return ret;
}
int main() {linear_shaker();int kase=read();while (kase--) {a=read(),b=read(),c=read(),d=read(),k=read();a=(a-1)/k,b/=k,c=(c-1)/k,d/=k;printf("%lld\n",cal(a,c)+cal(b,d)-cal(a,d)-cal(c,b));}return 0;
}

bzoj 2301(Mobius)相关推荐

  1. 莫比乌斯(Mobius)反演知识整合

    前言 虽然我去年就已经学过这东西了,但是一直没有整理.归纳.而且我发现我对它的套路不够熟悉.对它的理解不够透彻,卒致GDOIDay2T1没切(详细事故记录戳这里).所以,在此做一个知识整合. 引子 先 ...

  2. 欧拉函数和莫比乌斯反演(Mobius)

    这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...

  3. 莫比乌斯进阶:bzoj 2693 jzptab(Mobius)

    传送门 题解: 第四行μ(k)后还要乘一个i*j 实在看不下去以前打的巨丑的LaTex公式,于是重新打一遍顺便复习一下.(那个D=d*k的那一杠是word的输入符,请不要介意...) 最后一行括号里那 ...

  4. 莫比乌斯进阶:bzoj 3994 约数个数和(Mobius)

    传送门 题解: 简直完美<(▰˘◡˘▰)> 对于求约数个数,可以参看这一篇blog 除了线性筛,可以O(n√n)求(网上很多博客中就是这么做的),不过有更快的方法,代码复杂度又不高,为啥不 ...

  5. 莫比乌斯入门:bzoj 1101 Zap(Mobius)

    传送门 题解: #include<bits/stdc++.h> using namespace std; const int MAXN=50002,INF=0x3f3f3f3f; int ...

  6. BZOJ 1085(IDA*)

    题面 传送门 分析 首先,直接搜索肯定会TLE 很容易想到用迭代加深的方法,限定搜索深度 但是,这样仍然不够,需要用启发式的方法优化 我们设计一个估价函数f(x)=g(x)+h(x)f(x)=g(x) ...

  7. bzoj 1664 (贪心)

    [Usaco2006 Open]County Fair Events 参加节日庆祝 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 487  Solved ...

  8. BZOJ 1207(dp)

    传送门 题面: 1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4197  Solved: 2019 [Sub ...

  9. BZOJ1937 / BZOJ 3118(单纯形)

    传送门 题解: KM?网络流建模?不存在的. 单纯形立水之. (注意对偶之后跑得更快,取反大概要慢8倍). BZOJ3118: #include <bits/stdc++.h> using ...

最新文章

  1. 将数据库表中数据转为XML
  2. EditPlus正则表达式
  3. 正則表達式基本元字符集及其含义(上)
  4. 【Groovy】Groovy 代码创建 ( 使用 Java 语法实现 Groovy 类和主函数并运行 | 按照 Groovy 语法改造上述 Java 语法规则代码 )
  5. 织梦dedecms如何对列表添加判断语句
  6. 《写给大家看的设计书:实例与创意(修订版)》—1你已经知道多少了?
  7. 利用yum升级Centos6的gcc版本,使其支持C++11
  8. WCF RIA优缺点
  9. 毕昇 JDK:“传奇再现”华为如何打造 ARM 上最好用的 JDK?
  10. hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
  11. OO思想(只留做自己看理解)
  12. mysql queries 很大,mysql优化通常使用的几种方法
  13. 信息安全概论复习笔记
  14. html5一个可拖动的图片大小,HTML5画布中的可拖动和可调整大小元素
  15. html怎么在手机打不开,手机的浏览器打不开网页怎么办
  16. 通过xml方式根据word模板导出word
  17. 自我检讨书(我与电脑)
  18. 阿里云服务器部署(2)---配置EMQX服务器(企业版)
  19. 【滤波】概率、高斯和贝叶斯
  20. C# DataGridView控件动态添加行与列

热门文章

  1. [蓝桥杯]校内培训交流会总结
  2. 又一批大学!考研成绩延期公布!
  3. Linux内核编译基础
  4. shell-awk命令详解
  5. MySQL数据备份命令
  6. MRF.DDt(U)---MRF模型简介
  7. 文献阅读:Scaling Instruction-Finetuned Language Models
  8. python基于pingouin包进行统计分析:使用tost函数执行独立双样本双单侧检验(TOST)、以dataframe的形式输出分析结果(包含p值、自由度、bound等)
  9. java+ jsp+js 实现富文本编辑和上传图片功能
  10. 数据结构与算法2:线性表的顺序存储与链式存储