小学奥数 7834 分成互质组
OpenJudge - 7834:分成互质组
1221:分成互质组
信息学奥赛一本通(C++版)在线评测系统
总时间限制:
1000ms
内存限制:
65536kB
描述
给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?
输入
第一行是一个正整数n。1 <= n <= 10。
第二行是n个不大于10000的正整数。
输出
一个正整数,即最少需要的组数。
样例输入
6 14 20 33 117 143 175
样例输出
3
来源
2008年第十三届“华罗庚金杯”少年数学邀请赛 决赛第5题
/*
1221:分成互质组
http://ybt.ssoier.cn:8088/problem_show.php?pid=1221
*/
#include
#include
#include
#include
#include
#define N 20
using namespace std;
int n;
int a[N];
int cnt=99999;
long long vis[N];
long long gcd(long long a,long long b)
{
if(b==0)
return a;
return
gcd(b,a%b);
}
void dfs(int k,int step)
{
if(step==n+1)
{
if(k>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
vis[i]=1;
}
sort(a+1,a+1+n);
dfs(1,1);
cout<
#include
#include #include #include #include #include #include #include
#include
using namespace std;
int n,ans=1e9+1;
bool flag;
int a[10010],b[10010];//a[]保存数
int panduan(int a,int b)//递归法判断互质
{
if(b==0)return a;
return panduan(b,a%b);
}
void dfs(int x,int y)//搜到了第x个数,现在有y个集合
{
if(x==n+1)//搜索完成,取最小值,退出
{
ans=min(ans,y);
return;
}
for(int i=1;i<=y;i++)//组数
{
flag=true;
for(int j=1;j>n;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(1,1);//从第一个(数,组)开始
cout<
/*
小学奥数 7834:分成互质组
http://noi.openjudge.cn/math/7834/
*/
#include
#define N 15
int a[N]; //存数数组
int vis[N]; //访问数组
int cnt; //分组数
int gcd(int a,int b)
{
return a%b==0 ? b : gcd(b,a%b);
}
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=0;i
#include
#include
#include
using namespace std;
int n,line[15],edge[15][15],color[15],visit[15][15],ans=20,cnt;
int DFS(int x)
{
if(x>n){
if(ans>cnt)ans=cnt;
return 0;
}
memset(visit[x],1,sizeof(visit[x]));
for(int i=1;i
"""
小学奥数 7834 分成互质组03
http://noi.openjudge.cn/math/7834/
"""
import sys
import math
a=[]
vis=[]
N = 15
"""
for i in range ( N +1) :
a.append(0)
"""
for i in range ( N +1) :
vis.append(0)
cnt=0
def gcd( a,b):
if a%b==0:
return b
else:
return gcd(b,a%b)
n=int(input())
a = list(map(int,input().split()))
#print(a)
"""
for i in range(n):
a[i]=int(input())
"""
for i in range(n):
if vis[i]==0:
vis[i]=1
cnt+=1
for j in range(i+1,n):
if vis[j]==0 and gcd(a[i],a[j])==1:
a[i]*=a[j]
vis[j]=1
print(cnt)
电子学会 青少年软件编程等级考试 C语言 5 级
电子学会 青少年软件编程等级考试 C语言 5 级_dllglvzhenfeng的博客-CSDN博客
【OpenJudge NOI】题解目录
【OpenJudge NOI】题解目录_君义_noip的博客-CSDN博客
电子学会青少年编程等级考试
https://blog.csdn.net/dllglvzhenfeng/category_11735875.html
中国电子学会考评中心
中国电子学会考评中心
软件编程(C语言)
中国电子学会考评中心