http://acm.hdu.edu.cn/showproblem.php?pid=5072

题意:给出 n 个互不相同的数,求满足以下条件的三元无序组的个数:要么两两互质要么两两不互质。

思路:根据同色三角形原理求,白书105页。求它不符合条件的情况数,先对每一个数分解质因子,然后利用容斥求出与这个数不互质的数的个数,那么不符合条件的的情况数加上(x-1)*(n-x);  x为其它数与这个数不互质的个数。最后总的情况数减去不符合的情况数,剩下的就是答案。再求多少个是这个数的倍数的时候,可以用筛法求出。

 #include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#define maxn 100010
using namespace std; int t,n;
int a[maxn+];
int num[maxn+];
int cnt[maxn+];
vector<int>g; int main()
{
scanf("%d",&t);
while(t--)
{
memset(cnt,,sizeof(cnt));
memset(num,,sizeof(num));
scanf("%d",&n);
for(int i=; i<n; i++)
{
scanf("%d",&a[i]);
num[a[i]]++;
}
for(int i=; i<=maxn; i++)
{
for(int j=i; j<=maxn; j+=i)
{
cnt[i]+=num[j];
}
}
__int64 ans=;
for(int i=; i<maxn; i++)
{
if(num[i])
{
int m=i;
g.clear();
for(int j=; j*j<=i; j++)
{
if(m%j==)
{
g.push_back(j);
while(m%j==) m/=j;
}
}
if(m>) g.push_back(m);
int x=(int) g.size();
int cc=;
for(int j=; j<(<<x); j++)
{
int t2=;
int xx=;
for(int k=; k<x; k++)
{
if((<<k)&j)
{
t2++;
xx*=g[k];
}
}
if(t2%) cc+=cnt[xx];
else cc-=cnt[xx];
}
ans+=(__int64)max(cc-,)*(n-cc);
}
}
__int64 t1=(__int64)n*(n-)*(n-)/;
printf("%I64d\n",t1-ans/);
}
return ;
}

最新文章

  1. android 模拟2048
  2. web前端开发中常用的尺寸和位置
  3. 金字塔Lucas-Kanande光流算法实现
  4. IntelliJ IDEA 14.x 快捷键/个性化设置
  5. Linux之find命令用于统计信息
  6. php 迭代器
  7. 使用secureCRT远程Linux,出现远程主机拒绝连接
  8. VS2010手动添加外部工具和快捷键
  9. c++与c不太相同的一些地方2
  10. C++重载流插入运算符和流提取运算符【转】
  11. I can do it!(贪心)
  12. tr069开源协议EasyCwmp移植
  13. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  14. iOS中 流媒体播放和下载 韩俊强的博客
  15. 2017 Gartner数据科学魔力象限出炉,16位上榜公司花落谁家?
  16. 基于VirtualBox虚拟机安装Ubuntu教程
  17. 在mysql配置文件修改sql_mode或sql-mode 怎么办?
  18. OO第二单元多线程电梯总结
  19. No cached version of cn.lightsky.infiniteindicator:library:1.2.2 available for offline mode.
  20. 为什么python中没有switch case语句

热门文章

  1. [Redux] Supplying the Initial State
  2. 瑕疵(bug)严重性定义
  3. Eclipse启动 报错[Failed to load the JNI shared library jvm.dll
  4. CentOS iSCSI客户端使用配置
  5. Building Tomcat7 source step by step---官方文档
  6. 在Mac OS X下安装Android Studio
  7. linux下sed命令笔记
  8. MVC+MEF+UnitOfWork+EF架构,网站速度慢的原因总结!(附加ANTS Memory Profiler简单用法)
  9. MVC ViewData和ViewBag
  10. Linux系统swap已分区但无法挂载与cryptswap1问题