2301: [HAOI2011]Problem b

Time Limit: 50 Sec  Memory Limit: 256 MB
Submit: 7576  Solved: 3643
[Submit][Status][Discuss]

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

题解:

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

思路:在hdu1695的基础上加上容斥,即:ans=solve(b/k,d/k)-solve((a-1)/k,d/k)-solve((c-1)/k,b/k)+solve((a-1)/k,(c-1)/k),详见代码:

具体见代码:

 1 /**************************************************************
 2     Problem: 2301
 3     User: SongHL
 4     Language: C++
 5     Result: Accepted
 6     Time:10768 ms
 7     Memory:2072 kb
 8 ****************************************************************/
 9
10 #include<bits/stdc++.h>
11 using namespace std;
12 typedef long long ll;
13 const int sigma_size=26;
14 const int N=100+50;
15 const int MAXN=50000+50;
16
17 int primecnt;
18 int vis[MAXN],mu[MAXN],prime[MAXN],sum[MAXN];
19 void Mobius()
20 {
21     primecnt=0; mu[1]=1;
22     memset(vis,0,sizeof(vis));
23     for(int i=2;i<MAXN;i++)
24     {
25         if(!vis[i]) prime[primecnt++]=i,mu[i]=-1;
26         for(int j=0;j<primecnt && i*prime[j]<MAXN;j++)
27         {
28             vis[i*prime[j]]=1;
29             if(i%prime[j]) mu[i*prime[j]]=-mu[i];
30             else { mu[i*prime[j]]=0; break; }
31         }
32     }
33 }
34 ll solve(int l,int r)
35 {
36     ll ans=0;
37     if(l>r) swap(l,r);
38     int last;
39     for(int i=1;i<=l;i=last+1)
40     {
41         last=min(l/(l/i),r/(r/i));
42         ans+=(ll)(sum[last]-sum[i-1])*(l/i)*(r/i);
43     }
44     return ans;
45 }
46 int main()
47 {
48     Mobius();
49     sum[0]=0;
50     for(int i=1;i<MAXN;i++) sum[i]=sum[i-1]+mu[i];
51     int T;
52     scanf("%d",&T);
53     while(T--)
54     {
55         int a,b,c,d,k;
56         scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
57         ll ans=solve(b/k,d/k)-solve((a-1)/k,d/k)-solve((c-1)/k,b/k)+solve((a-1)/k,(c-1)/k);
58         printf("%lld\n",ans);
59     }
60     return 0;
61 }

View Code

  

转载于:https://www.cnblogs.com/songorz/p/9787882.html

BZOJ 2301 Problem b相关推荐

  1. BZOJ 2301 - Problem b(莫比乌斯反演+容斥)

    题目链接 https://cn.vjudge.net/problem/HYSBZ-2301 [题意] 对于给出的 n 个询问,每次求有多少个数对(x,y)(x,y) ,满足 a≤x≤b,c≤y≤da≤ ...

  2. BZOJ 2301 Problem b(莫比乌斯反演+分块优化)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满 ...

  3. BZOJ 2301: [HAOI2011]Problem b

    二次联通门 : BZOJ 2301: [HAOI2011]Problem b /*BZOJ 2301: [HAOI2011]Problem b莫比乌斯反演 + 容斥将k除下来后就变为了一道原题后像求二 ...

  4. HDU 1695 BZOJ 2301 莫比乌斯反演

    看了两个多小时,大概意思我觉得莫比乌斯是一个利用一个数的能被整除的一些数,通过容斥来计算出这个数的一些信息,很高级.这个题就当做是模板吧.然后把两种形式贴出来: 第一种: 第二种: 然后是容斥的函数: ...

  5. 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)函 ...

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

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

  7. 【BZOJ 2301】[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 2298 problem a

    Written with StackEdit. Description 一次考试共有\(n\)个人参加,第\(i\)个人说:"有\(a_i\)个人分数比我高,\(b_i\)个人分数比我低.& ...

  9. bzoj 2301(Mobius)

    推出式子然后分块求和(还需使用一下容斥原理). 分析:令f(n,m,i)表示在1<=x<=n,1<=y<=m,满足gcd(x,y)是i的(x,y)的对数. ans=f(c,d, ...

最新文章

  1. 【转】教你在PHP中使用全局变量
  2. Python学习之GUI--SQL数据库连接
  3. Latex:表格制作全攻略
  4. android edittext禁止输入特殊字符,Android EditText禁止输入空格和特殊字符
  5. tensorflow3 非线性回归、mnist、简单神经网络
  6. postman替换快捷键ctrl加什么_电脑截图快捷键ctrl加什么
  7. 新版本ISR 为啥 移除replica.lag.max.messages这个参数
  8. 股票历史数据下载接口踩坑记录
  9. Docker学习篇(一)Docker概述、安装和常用命令
  10. C语言储蓄系统编程,C语言:银行储蓄系统的开发(初级)-Go语言中文社区
  11. 关于用C#编写ActiveX控件4(转)
  12. 计算机408考研笔记汇总
  13. Android 签名类型
  14. 南京邮电大学电子电路课程设计可编程音乐自动演奏电路
  15. KDD2020|字节联合密歇根州立大学提出推荐广告联合训练框架RAM(已开源)
  16. erp是企业内部最重要的使用程序,它对日常运作至关重要
  17. java连接达梦数据库_【达梦数据库】Activiti连接达梦数据库
  18. nc6400 在bios中打开SATA模式就会蓝屏呢
  19. 完全二叉树的节点个数
  20. 为何用户体验无法被设计,如何为用户体验设计

热门文章

  1. java 值和引用_Java值传递还是引用传递?
  2. mysql .myi权限_mysql之引擎、Explain、权限详解
  3. OpenCV读图、展示和保存新图
  4. 红帽linux桌面版镜像下载,红帽 Red Hat Linux相关产品iso镜像下载【迅雷快传】【更新5.11 6.6】...
  5. 掌握了AI这些点,面试官的天选之子就是你
  6. VGG16迁移学习,实现医学图像识别分类工程项目
  7. linux多环境变量使用字典,字典的用处非常大,昨天在网上找了个能在linux跑的字典程序,分享一下。...
  8. 计算机可视化仿真技术opengl,基于OpenGL的三维场景可视化仿真
  9. 京东动态页面爬虫 scrapy+selenium
  10. 一汽奔腾b7o价位_全新奔腾B70正式上市,前脸被吐槽酷似某豪华品牌