素数环-蓝桥杯

news/2025/1/31 9:18:58/

题目描述

有一个整数 n,把从 1 到 n 的数字无重复的排列成环,且使每相邻的两个数(包括首和尾)的和都为素数,称为素数环。为了简便起见,我们规定每个素数环都从 1 开始。例如,6 的一个素数环:1 4 3 2 5 6

请编写一个程序,给定一个输入 nn ,如果存在满足要求的素数环,从小到大输出。否则,输出 No Answer

输入描述

输入整数 n,0<n<20

输出描述

如果存在满足要求的素数环,从小到大输出。否则,输出 No Answer

样例">样例">样例">样例">样例">样例">输入输出样例

示例

输入

8

输出

1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:

如果n为奇数时,任何一种全排列中必有两个奇数相邻,两个数的和为偶数,不是素数,直接返回“no answer”

采用深度优先搜索的方法得到全排列,设计判别是否为素数的函数判断当前的数和前一轮的数之和是否为素数,用这样的方法进行剪枝。

代码:

using namespace std;
#include<cmath>
#include<iostream>
const int N=22;
int vis[N];
int c[N]; 
int n;
int ans=0;int is_prime(int x){if(x<=1) return 0;for(int i=2;i*i<=x;i++){if(x%i==0){return 0;}}return 1;
}void dfs(int cur){if(cur==n && is_prime(c[0]+c[n-1])){ans++;for(int i=0;i<n;i++) cout<<c[i]<<" ";cout<<endl;return;}for(int i=2;i<=n;i++){if(!vis[i] && is_prime(i+c[cur-1])){vis[i]=1;c[cur]=i;dfs(cur+1);vis[i]=0;}}
}int main(){cin>>n;c[0]=1;if(n&1){cout<<"No Answer"<<endl;}else{dfs(1);if(ans=0)cout<<"No Answer"<<endl;}return 0;
}


http://www.ppmy.cn/news/666502.html

相关文章

【蓝桥杯】新型斐波那契数列

蓝桥杯 新型斐波那契数列 问题描述 新型斐波那契数列的第一、二、三项都为1&#xff0c;从第四项起每一项等于前面三项之和&#xff0c;求此数列第n项模m的余数。 输入格式 输入一行为两个整数n、m&#xff0c;用空格隔开。 输出格式 输出一行为新型斐波那契数列第n项模m的余数…

蓝桥杯——ALGO995——24点

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;就是给你四张扑克牌&#xff0c;然后尽可能的通过加减乘除和括号得到小于等于24的最大值&#xff0c;最大就是24。注意&#xff0c;除法的时候需要判断是不是整除。思路&#xff1a;猛一看&#xff0c;感觉可能…

使用7号电池的科学计算机,新奇:可以用USB充电的5号、7号电池

在大家的日常生活中&#xff0c;电池绝对是的离不开的物件。特别是AA五号电池和AAA七号电池&#xff0c;用途更加广泛&#xff0c;比如在很多家电的遥控器中、玩具、数码产品中&#xff0c;都可以找到他们的身影。为了使用方便&#xff0c;有不少人都会选择使用充电电池。但是充…

Acwing.838.堆排序

基础堆操作 题目 输入一个长度为n的整数数列&#xff0c;从小到大输出前m小的数。 输入格式 第一行包含整数n和m。 第二行包含n个整数&#xff0c;表示整数数列。 输出格式 共—行&#xff0c;包含m个整数&#xff0c;表示整数数列中前m小的数。 数据范围 1 ≤m ≤n ≤…

南孚电池持续领先同行的秘诀——集团数字化转型

注&#xff1a;本文为帆软2021数据生产力大赛获奖案例&#xff0c;未经授权禁止转载。 1 公司简介 福建南平南孚电池有限公司创立于1988年&#xff0c;系国家520户重点企业&#xff0c;国家高新技术企业&#xff0c;外经贸部重点扶持的出口企业&#xff0c;中国电池行业龙头…

互联网日报 | 苏宁家电累计销售突破20亿台;嘀嗒出行推出租车电子发票;钉钉上线“学生号”...

今日看点 ✦ 苏宁宣布&#xff1a;苏宁家电30年累计销售突破20亿台 ✦ 嘀嗒出行上线出租车电子发票&#xff0c;实时关联车内计价器 ✦ 钉钉宣布上线“学生号”&#xff1a;家长领取&#xff0c;孩子使用 ✦ 原中兴手机CEO曾学忠加盟小米&#xff0c;出任集团副总裁、手机部总裁…

5月24号作业

使用fgets计算行数 #include <stdio.h> #include <string.h> #include <errno.h>int main() {FILE *fp;int n0,count0;char Buf[1024];if((fpfopen("./file.txt","r"))NULL) //打开文件{perror("open file");return -1;}whi…

蓝桥杯ALGO-995 24点

问题描述 24点游戏是一个非常有意思的游戏&#xff0c;很流行&#xff0c;玩法很简单&#xff1a;给你4张牌&#xff0c;每张牌上有数字&#xff08;其中A代表1&#xff0c;J代表11&#xff0c;Q代表12&#xff0c;K代表13&#xff09;&#xff0c;你可以利用数学中的加、减、乘…