1221:分成互质组
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?
【输入】
第一行是一个正整数n。1 ≤ n ≤ 10。
第二行是n个不大于10000的正整数。
【输出】
一个正整数,即最少需要的组数。
【输入样例】
6
14 20 33 117 143 175
【输出样例】
3
【参考代码】
#include<bits/stdc++.h>
using namespace std;
int n,a[11],ans=0;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[j]&&gcd(a[i],a[j])==1)
{
a[i]*=a[j];
a[j]=0;
}
}
}
for(int i=1;i<=n;i++)
if(a[i]!=0)ans++;
cout<<ans<<endl;
return 0;
}