hdu5072 互素数对统计

博客探讨了如何统计与特定数x互素的数对以及三元组的数量。通过素因子分解,将问题转换为整除问题,并使用容斥原理和正难则反之思想求解。文章提供了两种不同的方法来计算非P三元组的数目,并给出了经典结论f[i]的计算过程,但警告这种方法可能因计算复杂性而导致超时。
摘要由CSDN通过智能技术生成

关键词:统计n个数种与x互素/不互素的个数

解决方案:通过对x素因子分解,得到不同素因子p1,p2...pk,问题转化为n个数中不被p1,p2...pk中任何一个数整除(与x互素)/至少被p1,p2...pk中一个数整除(与x不互素)的个数

心得:通过素因子分解将互素问题转化为整除问题(利用素数非整除即互素的性质)

题意:求n个数中两两不互素或两两互素的三元组数目

称满足上述性质的三元组为P三元组

解决非P三元组的计数问题有两种方法。

法一:先求出数组中与每个a[i]互素的个数f[i],这个最后再求。假设f[i]已知,我们用正难则反的思路求P三元组数目。任意一个非P三元组都既存在互素,又存在不互素的数对,因此我们可以对每个a[i],从数组中找出与a[i]互素和不互素的数各一个,这样就构成了一个非P三元组,而每个非P三元组仅对应两个a[i]选择,因此ans=sum{ f[i]*(n-1-f[i])/2,1<=i<=n }

C(n,3)-ans即为最终结果

法二:既然想到了正难则反的思路,不免要想到用容斥原理。设非P三元组的三个数为a1,a2,a3,Uij表示ai和aj不互素,则非P三元组的个数是:|U12∪U23∪U31|=|U12|+|U23|+|U31|-|U12∩U23|-|U23∩U31|-|U31∩U12|.其中|Uij|=sum{ f[i]*(n-2)*3, 1<=i<=n } |Uij∩Ujk|=sum{ C(f[i],2)*3,1<=i<=n },在上述计算中三元组视为有序,因此最后还要除以3!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值