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,无需配置环境变量 ...
随机推荐
- Redis Cluster 集群节点信息 维护篇(二)
集群信息文件: # cluster 集群内部信息对应文件,由集群自动维护. /data/soft/redis/6379data/nodes-6379.conf 集群信息查看: ./redis-trib ...
- 【老孟Flutter】源码分析系列之InheritedWidget
老孟导读:这是2021年源码系列的第一篇文章,其实源码系列的文章不是特别受欢迎,一个原因是原理性的知识非常枯燥,我自己看源码的时候特别有感触,二是想把源码分析讲的通俗易懂非常困难,自己明白 和 让别人 ...
- Linux TCP漏洞 CVE-2019-11477 CentOS7 修复方法
CVE-2019-11477漏洞简单介绍 https://cert.360.cn/warning/detail?id=27d0c6b825c75d8486c446556b9c9b68 RedHat用户 ...
- ELK一个优秀的日志收集、搜索、分析的解决方案
1 什么是ELK? ELK,是Elastaicsearch.Logstash和Kibana三款软件的简称.Elastaicsearch是一个开源的全文搜索引擎.Logstash则是一个开源的数据收集引 ...
- Python Pandas操作Excel
Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...
- C# socket 阻止模式与非阻止模式应用实例
问题概述 最近在处理一些TCP客户端的项目,服务端是C语言开发的socket. 实际项目开始的时候使用默认的阻塞模式并未发现异常.代码如下 1 public class SocketService 2 ...
- jQuery 实现复制功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 日志采集技术分析 Inode Inotify
日志采集技术分析[阿里] - 新手学习导向 - 中国红客联盟 - Powered by HUC http://www.cnhonkerarmy.com/thread-236973-1-1.html
- 栈 堆 stack heap 堆内存 栈内存 内存分配中的堆和栈 掌握堆内存的权柄就是返回的指针 栈是面向线程的而堆是面向进程的。 new/delete and malloc/ free 指针与内存模型
小结: 1.栈内存 为什么快? Due to this nature, the process of storing and retrieving data from the stack is ver ...
- IdentityServer4之Implicit和纯前端好像很配哦
前言 上一篇Resource Owner Password Credentials模式虽然有用户参与,但对于非信任的第三方的来说,使用这种模式是有风险的,所以相对用的不多:这里接着说说implicit ...