从给定的集合中求互质四元组的个数。
  解题思路:先求解非互质四元组的个数,在总体四元组个数减去这个数目。求非互质四元组即求公因数大于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. TDD可以驱动设计吗?
  2. epoll 接口以及原理说明
  3. 互联网安全问题的起因
  4. 做了一个RAID 5 10块盘的试验
  5. Python网络爬虫系列(一)
  6. Deep Learning的基本思想以及训练过程
  7. CSS兼容性解决方法!important的IE7,Firefox问题
  8. python get请求下载excel,前端开发,使用get和post方式下载excel表格
  9. C语言经典笔试题解析,原来微软笔试题也有简单的,C语言学习专题
  10. 苹果计算机取消用户名和密码进入不,苹果电脑怎么退出账户登录不了怎么办
  11. php 开启 exec,如何在php上启用shell_exec和exec?
  12. android html footer 固定,HTML5+CSS把footer固定在底部
  13. 京东API详情接口调用示例
  14. html像素小鸟小游戏,微信小游戏-像素鸟游戏
  15. [Acwing] 健康的荷斯坦奶牛 -二进制枚举
  16. 斥资75元,我搭建了自己的博客网站
  17. lua小技巧——lua全局变量的检测
  18. TCP模拟HTTP请求
  19. rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
  20. linux qt 字体哪个好,QT的的字体使用(全局自带字体特别好用)

热门文章

  1. DataGrid 数据绑定使用小结三(数据绑定)
  2. 大量打印怎么省钱,数量多怎么打印便宜
  3. php 采集邮箱,采集邮箱的php代码(抓取网页中的邮箱地址)
  4. GIS的核心价值——服务
  5. CSS进阶之关于网格布局(Grid) 你了解哪些
  6. 2022年度东湖高新区国家重点研发计划“先进结构与复合材料”重点专项申报指南!
  7. SQL Server 深入解析索引存储(非聚集索引)
  8. maven打包时打包指定的lib文件夹
  9. 计算机网络体系结构详解(7层、5层、4层的区别)
  10. 『跟着雨哥学AI』系列之八:趣味案例——有关NLP任务数据预处理的那些事儿...