从给定的集合中求互质四元组的个数。
  解题思路:先求解非互质四元组的个数,在总体四元组个数减去这个数目。求非互质四元组即求公因数大于1的四元组数目,因此,使用公因数d把集合中的元素划分成不同的子集,每个子集中的四元组一定是非互质的。还有一点需要考虑的是,不同子集中可能蕴含相同的非互质四元组。可以使用容斥原理解决这个问题,具体的方法是对公因数d进行质因数分解,若d可以分解成奇数个质数,就在非互质四元组总数中加上公因数d对应的非互质四元组,若为偶数则减去。

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;int cnt[10010];  //记录每个因数对应子集的元素数
int num[10010];  //记录每个因数分解的不同质因数个数
int prime[5];  //记录一个数字对应的质因数(10000以内最多有五个不同质因数)
long long p[10010]={0}; //记录组合数void solve(int n)
{int tol=0;for(int i=2;i*i<=n;i++) //求输入数字的质因数,方法很好{if(n%i==0)prime[tol++]=i;while(n%i==0)n=n/i;}if(n!=1)  //对应输入的数字本身就是质数prime[tol++]=n;for(int i=1;i<(1<<tol);i++)  //质因数的组合方法有2的tol次幂个{int k=1,sum=0;for(int j=0;j<tol;j++){if(i&(1<<j))    //求一个具体的质因数组合,使用按位与方法{k=k*prime[j];sum++;}}cnt[k]++;num[k]=sum;}
}
int main()
{int m,n;long long i;for(i=1;i<10010;i++)p[i]=i*(i-1)*(i-2)*(i-3)/24;while(cin>>n){memset(cnt,0,sizeof(cnt));for(i=0;i<n;i++){cin>>m;solve(m);}long long ans=0;for(i=0;i<10010;i++){if(cnt[i]>=4){if(num[i]&1) ans = ans+p[cnt[i]];elseans = ans-p[cnt[i]];}}cout<<p[n]-ans<<endl;}return 0;
}

引自:http://www.voidcn.com/article/p-yddwtjwu-bda.html

poj 3904 求四元互质集合相关推荐

  1. 欧拉函数(求与n互质的数的个数)

    求解与n(1-n-1)互质的质因子的个数 解析:(转) 定义:对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目. 例如:φ(8)=4,因为1,3,5,7均和8互质. 性质:1.若p是 ...

  2. matlab范德蒙德行列式,求四元一次方程组的解这个 我自己算了很久 算不出来,好像得用范德蒙德行列式,希望能给出关键步骤,并把答案写出.怎么不能出图?...

    优质解答 用matlab计算就简单了,指令: y=solve('x^3*a+x^2*b+x*c+d=y1','(x+t)^3*a+(x+t)^2*b+(x+t)*c+d=y2','(x+2*t)^3* ...

  3. UVA10820欧拉函数求互质的对数

    题意: 给出n,算出小于等于n的所有数中,有几对互质: 思路: 利用欧拉函数求与x互质的数的个数prime[x],再将prime[x]递推累加prime[x]=prime[x]+prime[x-1], ...

  4. `Computer-Algorithm` 数论基础知识 (同余,取模,快速幂,质数,互质,约数,质因子)

    catalog 同余 取模 快速幂 质数 互质 约数 质因子 @Delimiter(旧解释) 经验谈 两数之差也整除 加一的特殊性 取模 累加的周期性 取模的唯一集合 取模下的四则运算 除法的不可约性 ...

  5. 关于求1~n中与m互质的数的个数(容器原理+数论分解质因子)

    D. Count GCD 这道题严格来讲不难,a[i]与b[i+1]最大公约数为a[i+1],所以a[i]与b[i+1]必定整除a[i+1],且a[i]/a[i+1]与b[i+1]/a[i+1]互质, ...

  6. 容斥原理之求区间中与某数互质的个数

    一,定义 为了计算时不重不漏,就要不断加减重复部分 观察到:即奇数长度的前面是加号,偶数长度的为减号 二,思路:我们这里可以通过求不互质的数,自然就能得出互质的数,求不互质比较简单(因为他们是目标的质 ...

  7. 数学--数论--HDU1825(积性函数性质+和函数公式+快速模幂+非互质求逆元)

    As we all know, the next Olympic Games will be held in Beijing in 2008. So the year 2008 seems a lit ...

  8. 容斥原理 —— 求1~n有多少个数与k互质(二进制算法详细解释模板)

    这里有一道经典的例题,可以看一下:点击打开链接 这里的n可能要大于k的,所以不能用欧拉函数去做. 我们首先把k分解质因数,储存到p数组中,num表示质因子的数量. void pr(int k) //求 ...

  9. 求1到n中与n互质的和(数论)解释及证明

    给出一个N,求1-N中与N互质的数的和 ∑i=1ni[gcd(i,n)==1]\sum_{i=1}^n i \qquad[gcd(i,n)==1]∑i=1n​i[gcd(i,n)==1] 反证法:gc ...

最新文章

  1. iOS----------拨打电话的3种方式
  2. Kali Linux安装谷歌输入法
  3. sap事务代码_SAP事务码太多,记不住怎么办?
  4. java可以入侵电脑系统吗_如何通过tomcat入侵远程计算机系统
  5. DIY Ruby CPU 分析——Part III
  6. php 单例模式有什么缺点_PHP的完整形式是什么?
  7. 解决ios上微信无法捕获返回键按钮事件的问题
  8. Selenium2+python自动化7-xpath定位
  9. springboot+aop+自定义注解,打造通用的全局异常处理和参数校验切面(通用版)
  10. 设计模式全解析 23种
  11. ArcGIS 导出点图层的中的XY坐标
  12. Android IPC数据在内核空间中的发送过程分析
  13. ASP.NET控件Web CAD SDK发布v12版本,支持DWG 2018丨附下载
  14. 浮动元素具有行内块元素特点(HTML、CSS)
  15. Vim 和 NeoVim 曝出高危漏洞
  16. 前端html小技巧(css篇)—表单美化详解
  17. imagenet2012 对应 label
  18. Spring核心技术
  19. 景区介绍界面(Android)
  20. android p 模拟器开启刘海模式

热门文章

  1. win10系统无法识别USB设备?【系统天地】
  2. 使用hive做单词统计
  3. visual svn使用教程
  4. CRM系统有哪些类型?
  5. 关于全球变暖,你应该知道的事实
  6. 物联网新零售项目 物联网亿万级通信一站式解决方案EMQ
  7. Matlab群体智能优化算法之鹈鹕优化算法(POA)
  8. php织梦源码安装,如何安装网上下载的织梦源码
  9. 概率统计matlab实验,概率与数理统计matlab实验报告1.doc
  10. Hue编译安装适配sparksql(hue+livy+sparksql+pyspark)