hdu 5072 计数+容斥原理
- /*
- 题意: 给出n个数(n<100000), 每个数都不大于100000,数字不会有重复。现在随意抽出3个,问三个彼此互质 或者 三个彼此不互质的数目有多少。
- 思路: 这道题反着想,就是三个数中只有一对互质 或者只有两对互质的个数。
- 研究后发现 对于每个数字求出与其不互质的个数k 那么 sum ( k*(n-1-k) )/2 就是相反的数目, 所以最终的答案就是 C(n,3) - sum ( k*(n-1-k) )/2.
- */
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- using namespace std;
- typedef __int64 LL;
- const int maxn=;
- int prime[maxn],flag[maxn],num;
- int numc[maxn*+],f[maxn*+];
- int factor[],fac;
- LL sum;
- void getprimes()
- {
- memset(flag,,sizeof(flag));
- int i,j;num=;
- for(i=;i<maxn;i++)
- {
- if(flag[i]) prime[num++]=i;
- for(j=;j<num && prime[j]*i<maxn;j++)
- {
- flag[prime[j]*i]=;
- if(i%prime[j]==) break;
- }
- }
- }
- void dfs1(int now,int s)//找出它所有的因子
- {
- if(now==fac)
- {
- numc[s]++;
- return ;
- }
- dfs1(now+,s);
- dfs1(now+,s*factor[now]);
- }
- void dfs2(int id,int all,int now,int s )
- {
- if(now==all)
- {
- sum+=numc[s];
- return ;
- }
- if(id<fac)
- {
- dfs2(id+,all,now+,s*factor[id]);
- dfs2(id+,all,now,s);
- }
- }
- void getfactors(int n)//分解质因子
- {
- int i;fac=;
- for(i=;i<num && prime[i]<=n;i++)
- {
- if(n%prime[i]==)
- {
- factor[fac++]=prime[i];
- while(n%prime[i]==) n/=prime[i];
- }
- }
- if(n>) factor[fac++]=n;
- }
- int main()
- {
- getprimes();
- int t,n,i,j;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d",&n);
- memset(numc,,sizeof(numc));
- for(i=;i<=n;i++)
- {
- scanf("%d",f+i);
- getfactors(f[i]);
- dfs1(,);
- }
- LL ans=;
- for(i=;i<=n;i++)
- {
- getfactors(f[i]);
- LL ret=,temp=;
- for(j=;j<=fac;j++)//容斥原理找出与它不互质的个数
- {
- sum=;
- dfs2(,j,,);
- temp+=ret*sum;
- ret=-ret;
- }
- if(temp==) continue;//当f[i]==1时,所有数都与它不互质的是0个
- ans+=(temp-)*(n-temp);
- }
- printf("%I64d\n",(LL)n*(n-)*(n-)/-ans/);
- }
- return ;
- }
hdu 5072 计数+容斥原理的更多相关文章
- hdu 5072 Coprime 容斥原理
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...
- 集训队8月9日(组合计数+容斥原理+Mobius函数)
刷题数:4 今天看了组合计数+容斥原理+Mobius函数,算法竞赛进阶指南169~179页 组合计数 https://www.cnblogs.com/2462478392Lee/p/11328938. ...
- HDU 5072 Coprime (单色三角形+容斥原理)
题目链接:Coprime pid=5072"> 题面: Coprime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- ACM学习历程—HDU 5072 Coprime(容斥原理)
Description There are n people standing in a line. Each of them has a unique id number. Now the Ragn ...
- hdu 5072 Coprime(同色三角形+容斥)
pid=5072">http://acm.hdu.edu.cn/showproblem.php?pid=5072 单色三角形模型 现场赛和队友想了3个小时,最后发现想跑偏了.感觉好可惜 ...
- hdu 5072 两两(不)互质个数逆向+容斥
http://acm.hdu.edu.cn/showproblem.php?pid=5072 求n个不同的数(<=1e5)中有多少组三元组(a, b, c)两两不互质或者两两互质. 逆向求解,把 ...
- hdu 5072 Coprime
http://acm.hdu.edu.cn/showproblem.php?pid=5072 题意:给出 n 个互不相同的数,求满足以下条件的三元无序组的个数:要么两两互质要么两两不互质. 思路:根据 ...
- HDU 2461 Rectangles#容斥原理
http://acm.hdu.edu.cn/showproblem.php?pid=2461 题目很简单,但是由于询问数M可以很大,所以容易超时,这道题学到了在结构体里面写函数的方法,这样子效率更高, ...
- HDU 1695 GCD#容斥原理
http://acm.hdu.edu.cn/showproblem.php?pid=1695 翻译题目:给五个数a,b,c,d,k,其中恒a=c=1,x∈[a,b],y∈[c,d],求有多少组(x,y ...
随机推荐
- float 浮动详解
浮动(float):浮动原先设定时主要是用于文本环绕图像设定的,后来发现其在css布局中有很大的帮助,故渐渐使用浮动. 浮动后的元素脱离了文档的普通流,使得浮动的元素不占据文档的位置,其他元素可以覆盖 ...
- HTML+CSS : 笔记整理(2 常规流,BFC,固定定位,z-index)
BFC和常规流的关系是什么:常规流遵循BFC,IFC规则. 定位规则总体来说三种: 常规流,浮动,绝对定位(CSS3里面新加了一种flex) 其中常规流包括BFC,IFC等规则,块级元素一个一排地从上 ...
- zookeeper的搭建方法
1.创建三台虚拟机分别在虚拟机上安装Ubuntu16.04Server版的系统. 2.首先选择配置好第一台虚拟机,使用命令vim /etc/hosts对该文件进行修改 3.将zookeeper-3.4 ...
- HDU 3364 高斯消元
Lanterns Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- 13、python中的函数(闭包与装饰器)
一.嵌套函数 函数的内部又再定义另一个函数,这个函数就叫嵌套函数,里面含函数就叫内部函数. 示例: 二.返回函数 函数可以接收函数对象作为参数,同理函数也能返回一个函数对象作为返回值. 示例: 返回函 ...
- python基础之生成器表达式形式、面向过程编程、内置函数部分
生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为 ...
- python基础之生成器、三元表达式、列表生成式、生成器表达式
生成器 生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器,生成器在本质上就是迭代器. def foo(): print('first------>') yield 1 pri ...
- html---Web Storage存储
在HTML5中,除了Canvas元素之外,另一个新增的非常重要的功能是可以在客户端本地保存数据的Web Storage功能,之前可以使用Cookies在客户端保存如用户名等简单用户信息,但通过长期使用 ...
- GCD那些事儿
GCD GCD,全名Grand Central Dispatch,中文名郭草地,是基于C语言的一套多线程开发API,一听名字就是个狠角色,也是目前苹果官方推荐的多线程开发方式.可以说是使用方便,又不失 ...
- Django笔记 —— MySQL安装
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...