首页 > 编程语言 >南沙C++信奥老师解一本通题 1221:分成互质组

南沙C++信奥老师解一本通题 1221:分成互质组

时间:2024-09-29 12:23:41浏览次数:7  
标签:cnt 信奥 1221 int pos ans 正整数 互质

 【题目描述】

给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?

【输入】

第一行是一个正整数n。1 ≤ n ≤ 10。

第二行是n个不大于10000的正整数。

【输出】

一个正整数,即最少需要的组数。

【输入样例】

6
14 20 33 117 143 175

【输出样例】

3
#include <bits/stdc++.h>
using namespace std;
int a[11],path[11][11],ans=0x3f3f3f3f,n; //path[i][j] 行 表示有i组,每组有多少个元素 
int gcd(int a,int b) //辗转相除法
{
	return a%b==0?b:gcd(b,a%b);
}
void dfs(int pos,int cnt)	//pos为要放当前的位置,cnt存的当前查找到的分组个数 
{
	if(pos==n+1)
	{
		ans=min(ans,cnt);
		return;
	}//尝试 将某个数放到某其中一组能互质的,不是只要能互质就固定下来,要尝次多组互质都要试下,也要尝试自己单独一组 
	for(int i=1;i<=cnt;i++) //共有cnt组  一情况情组可以放得下    
	{
		bool flag=true;
		for(int j=1;j<pos;j++)
		{
			if( path[i][j]!=0 && gcd( a[pos], path[i][j] ) !=1 ) //互质 
			{
				flag=false;
				break;// 不能放到这组 
			}
		}
		if(flag)
		{
			path[i][pos]=a[pos];
			dfs(pos+1,cnt);
		}
	}
	//自己单独作为一组
	path[cnt+1][pos]=a[pos];
	dfs(pos+1,cnt+1);
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	dfs(1,1);	//从数组1开始  
	cout<<ans;
	return 0;
}

 

标签:cnt,信奥,1221,int,pos,ans,正整数,互质
From: https://www.cnblogs.com/nanshaquxinaosai/p/18439428

相关文章

  • 打卡信奥刷题(800)用Scratch图形化工具信奥P8241[普及组/提高] [COCI2013-2014#3] RIJE
    [COCI2013-2014#3]RIJEČI题目描述一天,Mirko发现了一个非常大的屏幕,这个屏幕上一开始只有一个字母A\texttt{A}A。Mirko在这个屏幕旁边找到了一个按钮。当他按一次时......
  • 信奥OJ的搭建
    第一步,服务器申请选择一:免费云服务器,免费虚拟主机如:阿贝云阿贝云提供了免费的云服务器和免费的云虚拟主机,可根据自己的实际应用情况选择。首先注册一个账户,然后需要支付0.3元做一个实名认证,如果实名认证成功了大概率会开通成功。如果失败了可能是服务器资源......
  • 广州C++信奥老师解一本通题 1919:【02NOIP普及组】选数
    ​ 【题目描述】已知nn个整数x1,x2,……xn以及一个整数K(K<n)。从n个整数中任选K个整数相加,可分别得到一系列的和。例如当n=4, k=34个整数分别为3,7,12,193,7,12,19时,可得全部的组合与它们的和为:3+7+12=223+7+19=297+12+19=383+12+19=34现在,要求你计......
  • 广州C++信奥老师解1913:【00NOIP普及组】单词接龙
    ​ 【题目描述】 【输出】 样例连成的“龙”为atoucheatactactouchoose#include<bits/stdc++.h>usingnamespacestd;intv[21],ans=0,n;stringa[21];intgetPos(strings1,strings2)//beast和astonish例ast则返回位置2,但实际把后面onish接上去{for......
  • 广州C++信奥老师解一本通题 1260:1282:最大子矩阵
    ​ 【题目描述】已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1×1)子矩阵。比如,如下4×4的矩阵0 -2-7 09 2-6 2-4 1-4 1-1 8 0-2 的最大子矩阵是92-41-18 这个子矩阵的大小是15......
  • 广州C++信奥赛老师解一本通题 1389:亲戚
    ​ 【题目描述】若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的某个人所在家族的人数。规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。【输入】第一行:三个整数n,(n......
  • 南沙C++信奥老师解一本通题 1264:【例9.8】合唱队形
    ​ 【题目描述】N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设KK位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<T2<…<Ti,Ti>Ti+1>…>TK(1≤i≤K)你的任务是,......
  • 南沙C++信奥老师解一本通题 1281:最长上升子序列
    ​ 【题目描述】一个数的序列bibi,当b1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK),这里1≤i1<i2<...<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列......
  • 打卡信奥刷题(784)用Scratch图形化工具信P6488[普及组/提高组] [COCI2010-2011#6] OKUPL
    [COCI2010-2011#6]OKUPLJANJE题目描述一场巨大的派对结束以后,有五家报纸刊登了参加这场派对的人数,然而这些报纸上的数字可能是错误的。现在你知道整个会场的面积是LL......
  • 南沙C++信奥老师解一本通题 1260:【例9.4】拦截导弹(Noip1999)
    ​【题目描述】某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦......