首页 > 编程语言 >南沙C++信奥老师解一本通题:2110:【例5.1】素数环

南沙C++信奥老师解一本通题:2110:【例5.1】素数环

时间:2024-09-16 08:54:43浏览次数:1  
标签:5.1 信奥 int 素数 通题 return 输入

【题目描述】

输入正整数n,把整数1,2,…,n 组成一个环,使得相邻两个整数之和均为素数。

【输入】

输入正整数n。

【输出】

输出任意一个满足条件的环。

【输入样例】

6

【输出样例】

4 3 2 5 6 1

【提示】

数据满足:

4≤n≤30

#include <bits/stdc++.h>
using namespace std;
int v[31],a[31],n;
bool isPrime(int n)
{
	for(int i=2;i<=sqrt(n);i++)
		if(n%i==0)
			return false;
	return true;
}
bool isPrimePair(int pos)
{
	if(pos==1)
		return isPrime(pos);
	else if(pos==n)
		return isPrime(a[1]+a[n]);
	return isPrime(a[pos-1]+a[pos]);
}
void dfs(int cnt)
{
	if(cnt>1&&isPrimePair(cnt)==false ) //新填的数不构成素数环,退出 
		return;
	if(cnt==n&&isPrimePair(n))
	{
		for(int i=1;i<=n;i++)
			cout<<a[i]<<" ";
		exit(0); //只需要一种,程序强制退出 
	}
	for(int i=1;i<=n;i++)
	{
		if(v[i]==0 ) //没有被访问且与上一个元素之和相加是素数  
		{
			a[cnt+1]=i;
			v[i]=1; //标记已填过数了 
			dfs(cnt+1);
			v[i]=0;// 回溯 
		}
	}
}
int main()
{
	cin>>n;
	a[1]=1;
	v[1]=1;
	dfs(1);
	return 0;
}

 

 

标签:5.1,信奥,int,素数,通题,return,输入
From: https://www.cnblogs.com/nanshaquxinaosai/p/18415938

相关文章

  • 南沙C++信奥老师解一本通题 1228:书架
    ​ 【题目描述】John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。John共有NN头奶牛(1≤N≤20,000),每头奶牛有自己的高度Hi(1≤Hi≤10,000),N头奶牛的总高度为S。书架高度为B(1≤B≤S<2,000,000,007)。为了到达书架顶层,奶牛可以踩着其他奶牛的......
  • 打卡信奥刷题(761)用Scratch图形化工具信奥P5713[普及组/提高组] 【深基3.例5】洛谷团队
    【深基3.例5】洛谷团队系统题目描述在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间555分钟;而在洛谷团队中上......
  • 南沙C++信奥老师解一本通题: 1161:转进制
    ​ 题目描述】用递归算法将一个十进制数X转换成任意进制数M(M≤16)。【输入】一行两个数,第一个十进制数X,第二个为进制M。【输出】输出结果。【输入样例】3116{将十进制31转化为十六进制数}【输出样例】1F#include<iostream>usingnamespacestd;intx,m;void......
  • 南沙C++信奥老师解一本通题: 1361:产生数(Produce)
    ​ [题目描述】给出一个整数n(n≤2000)和k个变换规则(k≤15)。规则:①1个数字可以变换成另1个数字;②规则中,右边的数字不能为零。例如:n=234,k=2规则为2→53→6上面的整数234经过变换后可能产生出的整数为(包括原数)234,534,264,564共4种不同的产生数。求经过任意次的变换(0次......
  • 南沙C++noip老师解一本通题: 1360:奇怪的电梯(lift)
    ​【题目描述】大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤=Ki≤=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:33125代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4......
  • dremio 25.1 发布
    就在今天dremio发布了25.1版本(社区版)同时提供了docker镜像以及下载地址说明目前官方还缺少releasenote说明,目前来说github代码尽管提交了,但是不是新的(只更新了mavenpackageversion),从简单测试上,的确有一些bug修复,但是目前官方博客的一些新特性介绍,暂时测试没体现出来,可能是......
  • 5.1.1 第三种循环----for循环
    如图结果闺女买了两袋包子,一袋十二个,一共24个包子.为啥?4!=24.n!表示阶乘,n!=1*2*3*...*n如果我们要写一个程序,计算一个数n的阶乘并打印结果,要怎么设计呢?变量:我们需要输入一个整数n.然后需要一个fac来记录n累乘得结果,最后一个整数i,来让他在fac累乘之后每次加1,在i大......
  • 南沙C++信奥老师解一本通题: 1212:LETTERS
    ​ 题目描述】给出一个row×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。【输入】第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。接着输出R行S列字母矩阵。【输出】最多能走过的不同字母......
  • 【CSS in Depth 2 精译_028】第五章 网格布局 + 5.1 构建基础网格
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一章层叠、优先级与继承(已完结)1.1层叠1.2继承1.3特殊值1.4简写属性1.5CSS渐进式增强技术1.6本章小结第二章相对单位(已完结)2.1相对单位的威力2.2em与rem2.3告别像素思维2.4视口的相对单位2.5......
  • 南沙C++信奥老师解一本通题: 1315:【例4.5】集合的划分
    ​ 【题目描述】【输入】给出n和k。【输出】n个元素a1,a2,……,an放入k个无标号盒子中去的划分数S(n,k)。【输入样例】106 【输出样例】22827 #include<iostream>usingnamespacestd;longlongSplit(intn,intplate)//等同于n个不同的数......