GCD HDU - 1695 容斥原理(复杂度低的版本)
题意:
让你从区间[a,b]里面找一个数x,在区间[c,d]里面找一个数y。题目上已经设定a=b=1了。问你能找到多少对GCD(x,y)=k。x=5,y=7和y=5,x=7是同一对
题解:
弄了半天才知道我得容斥原理方法卡时间了,我那个复杂度太高了。。。卧槽了
老版本的这里可以看:HDU - 4135 容斥原理
下面说一下复杂度低的容斥原理的思想
这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。 如果被计数的事物有A、B、C三类,那么,A类和B类和C类元素个数总和= A类元素个数+ B类元素个数+C类元素个数—既是A类又是B类的元素个数—既是A类又是C类的元素个数—既是B类又是C类的元素个数+既是A类又是B类而且是C类的元素个数。
对于这道题[1,b]转化为[1,b/k]。[1,d]转化为[1,d/k]。这样的话只需要for循环i从1到b/k,找出来区间[1,d/k]内有多少数与i互质就行了
但是要注意题目说了x=5,y=7和y=5,x=7是同一对,那这就需要去重,这一点具体见代码
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<math.h>
6 #include<queue>
7 using namespace std;
8 typedef long long ll;
9 const int maxn=100000;
10 ll v[maxn],index;
11 void oula(ll n) //获取n的所有质因数
12 {
13 index=0;
14 for(ll i=2; i<=sqrt(n); ++i)
15 {
16 if(n%i==0)
17 {
18 v[index++]=i;
19 n/=i;
20 while(n%i==0)
21 n/=i;
22 }
23 }
24 if(n>1)
25 v[index++]=n;
26 }
27 ll get_result(ll n)//容斥原理
28 {
29 ll ans=0;
30 for(ll i=1;i< (1<<index) ; i++)
31 {
32 ll ones=0,mult=1;
33 for(ll j=0;j<index;j++)
34 {
35 if(i & (1<<j))
36 {
37 ones++;
38 mult*=v[j];
39 }
40 }
41 if(ones&1)//奇数加,偶数减
42 ans+= n/mult;
43 else
44 ans-= n/mult;
45 }
46 return n-ans;
47 }
48 int main()
49 {
50 ll t,p=1;
51 scanf("%lld",&t);
52 while(t--)
53 {
54 ll a,b,c,d,k;
55 scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&k);
56 if(k==0) {printf("Case %lld: 0\n",p++);continue;}//k==0特判
57 if(b>d) swap(b,d);
58 d/=k,b/=k;
59 ll ans=0;
60 for(ll i=1;i<=b;i++)//1~b区间
61 {
62 oula(i);
63 ans+=get_result(b);
64 }
65 ans=(ans+1)/2; //这个除2就把那个 x=5,y=7和y=5,x=7是同一对 这个要求满足了
66 for(ll i=b+1;i<=d;i++)//b+1~d区间
67 {
68 oula(i);
69 ans+=get_result(b);
70 }
71 printf("Case %lld: %lld\n",p++,ans);
72 }
73 return 0;
74 }
GCD HDU - 1695 容斥原理(复杂度低的版本)的更多相关文章
- D - GCD HDU - 1695 -模板-莫比乌斯容斥
D - GCD HDU - 1695 思路: 都 除以 k 后转化为 1-b/k 1-d/k中找互质的对数,但是需要去重一下 (x,y) (y,x) 这种情况. 这种情况出现 x ,y ...
- GCD HDU - 1695(容斥原理)
要求从满足gcd(x, y) = k的对数,其中x属于[1, n], y属于[1, m] gcd(x, y) = k ==>gcd(x/k, y/k) =1 x/k属于[1, n/k], y/k ...
- hdu 1695 容斥原理或莫比乌斯反演
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- GCD HDU - 1695 (欧拉 + 容斥)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- GCD HDU - 1695 莫比乌斯反演入门
题目链接:https://cn.vjudge.net/problem/HDU-1695#author=541607120101 感觉讲的很好的一个博客:https://www.cnblogs.com/ ...
- HDU 1695 容斥
又是求gcd=k的题,稍微有点不同的是,(i,j)有偏序关系,直接分块好像会出现问题,还好数据规模很小,直接暴力求就行了. /** @Date : 2017-09-15 18:21:35 * @Fil ...
- HDU 5514 容斥原理
Frogs Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- - Visible Trees HDU - 2841 容斥原理
题意: 给你一个n*m的矩形,在1到m行,和1到n列上都有一棵树,问你站在(0,0)位置能看到多少棵树 题解: 用(x,y)表示某棵树的位置,那么只要x与y互质,那么这棵树就能被看到.不互质的话说明前 ...
- 低JAVA版本,高兼容性启动
低JAVA版本,高兼容性启动 背景:部分操作系统java环境低版本,暂时无法更新最新版本,新系统需要使用较高版本Java环境 1.JAVA低版本不兼容当前应用 2.解压安装JAVA,无需配置环境变量 ...
随机推荐
- 美业黑科技 ▏肌肤管家SkinRun V3S智能肌肤测试仪,实现“护肤”私人定制
肌肤如同身体,也需要定时的"健康检查",但仅凭肉眼难以窥见深层的肌肤问题.而现在,肌肤管家SkinRun前沿黑科技护肤测试仪--SkinRun V3S便能帮助用户对症下药.肌肤管家 ...
- mmall商城用户模块开发总结
1.需要实现的功能介绍 注册 登录 用户名校验 忘记密码 提交问题答案 重置密码 获取用户信息 更新用户信息 退出登录 目标: 避免横向越权,纵向越权的安全漏洞 MD5明文加密级增加的salt值 Gu ...
- [从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐
[从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐 目录 [从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐 0x00 摘要 0x01 业务范畴 1.1 失效剔除 1.2 服务续约 ...
- Java Mybatis快速入门之基本使用
目录 搭建环境 编写 Mybatis 核心配置文件 pom导出资源失败 测试 搭建环境 新建Maven项目 导入Maven依赖 <dependencies> <!--mysql驱动- ...
- Java JDK8下载 (jdk-8u251-windows-x64和jdk-8u271-linux-x64.tar)
jdk-8u251-windows-x64 和 jdk-8u271-linux-x64.tar 链接:https://pan.baidu.com/s/1gci6aSIFhEhjY8F48qH39Q 提 ...
- (十九)hashlib模块
hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 注意:md5和sha25 ...
- oracle move表空间(分区表,索引)
1.修改分区表分区表空间 SELECT 'ALTER TABLE ' || table_owner || '.' || TABLE_NAME || ' MOVE PARTITION ' || PART ...
- Cookie&Session&Jsp总结
知识点梳理 Cookie&Session&Jsp 1 会话技术 1.1 会话管理概述 1.1.1 会话技术介绍 会话:浏览器和服务器之间的多次请求和响应 (一次对话) 为了实现一些功能 ...
- 如何创建一个 PostgreSQL 数据库?
PostgreSQL 官网截图 PostgreSQL 是什么? PostgreSQL 是一个功能非常强大的,历史悠久,开源的关系数据库.PostgreSQL支持大部分的SQL标准并且提供了很多其他现代 ...
- Mybatis解决字段与属性不匹配的问题、链表查询、嵌套查询、#{}和${}的区别
1.使用接口结合xml映射文件 创建一个接口,该接口要和映射文件匹配(接口中方法名要和映射文件中的id相同) 映射文件中命名空间要和接口全类名相同 测试: 创建一个与src同级的源文件夹resourc ...