原题链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2301

Problem b

Description

对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。

Input

第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k

Output

共n行,每行一个整数表示满足要求的数对(x,y)的个数

Sample Input

2
2 5 1 5 1
1 5 1 5 2

Sample Output

14
3

HINT

100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000

题解

我们可以很容易就能推出下面的式子:

ans=∑i=1a∑j=1b[gcd(i,j)=d]ans=∑i=1a∑j=1b[gcd(i,j)=d]

ans=\sum_{i=1}^a\sum_{j=1}^b[gcd(i,j)=d]

ans=∑k=1min(n,m)μ(k)⌊adk⌋⌊bdk⌋ans=∑k=1min(n,m)μ(k)⌊adk⌋⌊bdk⌋

ans=\sum_{k=1}^{min(n,m)}\mu(k)\lfloor\frac{a}{dk}\rfloor\lfloor\frac{b}{dk}\rfloor

如果你觉得不是很容易,右转进入ZAP-Queries。

那么我们已经可以求出1∼a,1∼b1∼a,1∼b1\thicksim a,1\thicksim b的答案了,但题目要求是a∼b,c∼da∼b,c∼da\thicksim b,c\thicksim d,我们可以用简单的容斥来解决这个问题:

直接计算1∼b,1∼d1∼b,1∼d1\thicksim b,1\thicksim d时,我们会多算1∼a−1,1∼d1∼a−1,1∼d1\thicksim a-1,1\thicksim d和1∼c−1,1∼b1∼c−1,1∼b1\thicksim c-1,1\thicksim b这一部分,要将其减掉;同时,我们就多减掉了1∼a−1,1∼b−11∼a−1,1∼b−11\thicksim a-1,1\thicksim b-1,把这一部分加回来,我们就得到了正确答案。

代码
#include<bits/stdc++.h>
#define R register int
#define ll long long
using namespace std;
const int M=5e4+5,N=5e4;
int miu[M],p[M],n;
bool check[M];
void getmiu()
{miu[1]=check[1]=1;R i,j,t;for(i=2;i<=N;++i){if(!check[i])p[++p[0]]=i,miu[i]=-1;for(j=1;j<=p[0];++j){t=i*p[j];if(t>N)break;check[t]=1;if(i%p[j]==0){miu[t]=0;break;}miu[t]=-miu[i];}miu[i]+=miu[i-1];}
}
ll f(int a,int b,int k)
{a/=k,b/=k;if(a>b)swap(a,b);ll ans=0;R l,r;for(l=1;l<=a;l=r+1)r=min(a/(a/l),b/(b/l)),ans+=1ll*(miu[r]-miu[l-1])*(a/l)*(b/l);return ans;
}
void in(){getmiu();scanf("%d",&n);}
void ac(){R a,b,c,d,k,i;for(i=1;i<=n;++i)scanf("%d%d%d%d%d",&a,&b,&c,&d,&k),printf("%lld\n",f(b,d,k)+f(a-1,c-1,k)-f(a-1,d,k)-f(c-1,b,k));}
int main()
{in();ac();return 0;
}

BZOJ2301[HAOI2011] Problem b相关推荐

  1. BZOJ2301: [HAOI2011]Problem b

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

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

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

  3. BZOJ2301:[HAOI2011]Problem b(莫比乌斯反演,容斥)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  4. [bzoj2301][HAOI2011]Problem b

    题目大意:给你$a,b,c,d,k(1\leqslant a,b,c,d,k\leqslant 5\times10^4)$,求$\displaystyle\sum\limits_{x=a}^b\dis ...

  5. bzoj2301: [HAOI2011]Problem b懵逼乌斯反演

    属于结果的和好求但是结果不好求的题 (轻易能得到以k的倍数为最大公约数的对数,但是不好直接求k) 所以一波反演结束 其实反演的时候完全没有反演的感觉,就是不停地恒等变形 算是懵逼乌斯反演最简单的例题 ...

  6. BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  7. [bzoj2301] [HAOI2011]Problem b

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  8. BZOJ 2301 [HAOI2011]Problem b

    2301: [HAOI2011]Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函 ...

  9. [POI2007]ZAP-Queries [HAOI2011]Problem b 莫比乌斯反演

    1,[POI2007]ZAP-Queries ---题面--- 题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$ ...

  10. [HAOI2011]Problem c

    链接 P2523 [HAOI2011]Problem c 想法还是很巧妙的. 其实只是问一个先后顺序,因为编号相同的话,那么\(id\)小的就在前面,\(id\)大的就在后面. 所以我们考虑的是到底有 ...

最新文章

  1. 加密令牌与协议创新时代的到来
  2. HDU 2189 悼念512汶川大地震遇难同胞——来生一起走
  3. c语言malloc函数用法_小白对c语言数组的基础总结
  4. 20211006 线性变换
  5. struts2校验再提交多条提示信息
  6. 当我们在谈 .NET Core 跨平台时,我们在谈些什么?--学习笔记
  7. 循环给对象创建属性名和属性值
  8. 小米路由器怎么连接无盘服务器,播放器+服务器的方法瞬间玩转小米路由方法图文介绍...
  9. linux php oauth安装,Linux php 扩展安装 mongo ,redis ,soap,imap,pdo_mysql,oauth
  10. mysql索引过多为什么会慢_mysql – 为什么索引使这个查询更慢?
  11. 信息学奥赛一本通(1252:走迷宫)
  12. Android 性能测试——Memory Monitor 工具
  13. mysql left join_对比MySQL,教你在Pandas中实现SQL常用操作!
  14. Rust导出Python/Node.js可用的DLL库
  15. iftop网卡流量监控软件
  16. sql取上个月年月_sql 查询本年、本月、本日记录的语句,附SQL日期函数
  17. 仿照支付宝等——自动获取短信中的验证码
  18. 如何设计网页排版和样式 - 前端页面设计
  19. 2750 心系南方灾区
  20. 数据库SQLite之嵌入式Linux实际网关项目使用初步

热门文章

  1. 计算机网络技术提纲,计算机网络技术复习提纲
  2. 使用GoKart对Go代码进行静态安全分析
  3. Mysql报错(必解决):The user specified as a definer (‘mysql.infoschema‘@‘localhost‘) does not exist
  4. cv python 画直线_Python进阶之Matplotlib入门(一)
  5. apache服务上配置https安全与域名请求
  6. win10 Anaconda3 安装TensorFlow
  7. spring 的3种常用的注入方式
  8. Oozie 安装及 examples app 的使用
  9. Oracle ERP Interface堵住--Request Running too long time,查找Request执行的Sql
  10. Altium Designer生成网表 导出网表【worldsing笔记】