hdu 5072 Coprime
2024-08-28 02:40:04
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 ;
}
最新文章
- android 模拟2048
- web前端开发中常用的尺寸和位置
- 金字塔Lucas-Kanande光流算法实现
- IntelliJ IDEA 14.x 快捷键/个性化设置
- Linux之find命令用于统计信息
- php 迭代器
- 使用secureCRT远程Linux,出现远程主机拒绝连接
- VS2010手动添加外部工具和快捷键
- c++与c不太相同的一些地方2
- C++重载流插入运算符和流提取运算符【转】
- I can do it!(贪心)
- tr069开源协议EasyCwmp移植
- eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
- iOS中 流媒体播放和下载 韩俊强的博客
- 2017 Gartner数据科学魔力象限出炉,16位上榜公司花落谁家?
- 基于VirtualBox虚拟机安装Ubuntu教程
- 在mysql配置文件修改sql_mode或sql-mode 怎么办?
- OO第二单元多线程电梯总结
- No cached version of cn.lightsky.infiniteindicator:library:1.2.2 available for offline mode.
- 为什么python中没有switch case语句
热门文章
- [Redux] Supplying the Initial State
- 瑕疵(bug)严重性定义
- Eclipse启动 报错[Failed to load the JNI shared library jvm.dll
- CentOS iSCSI客户端使用配置
- Building Tomcat7 source step by step---官方文档
- 在Mac OS X下安装Android Studio
- linux下sed命令笔记
- MVC+MEF+UnitOfWork+EF架构,网站速度慢的原因总结!(附加ANTS Memory Profiler简单用法)
- MVC ViewData和ViewBag
- Linux系统swap已分区但无法挂载与cryptswap1问题