joj 1195
来源:互联网 发布:php经典实例 编辑:程序博客网 时间:2024/06/04 20:01
1195: Prime Ring Problem
A ring is composed of n circles as shown in diagram. Put natural numbers into each circle separately, and the sum of numbers in two adjacent circles should be a prime.
Note: the number of first circle should always be 1.
Input
n (0 < n <= 16)Output
The output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers must satisfy the above requirements.
You are to write a program that completes above process.
Sample Input
68
Sample Output
Case 1:1 4 3 2 5 61 6 5 2 3 4Case 2:1 2 3 8 5 6 7 41 2 5 8 3 4 7 61 4 7 6 5 8 3 21 6 7 4 3 8 5 2
#include <iostream>#include <cmath>using namespace std;const int maxn = 33;int isp[maxn], n, a[10000],vis[10000];bool judge(int x){int i;for (i=2; i<=sqrt((double)x); i++){if (x % i == 0) return false;}return true;}void makeprime(){int i;for (i=2; i<=maxn; i++)if (judge(i)) isp[i] = 1;}void dfs(int cur){if (cur == n && isp[a[0]+a[n-1]]==1){int i;cout<<a[0];for (i=1;i<n; i++){cout<<" "<<a[i];}cout<<endl;}else{int i;for (i=2; i<=n; i++){if (!vis[i] && isp[i+a[cur-1]] == 1){a[cur] = i;vis[i] = 1;dfs(cur+1);vis[i] = 0;}}}}int main(){makeprime();int count=0;while (cin>>n){count++;cout<<"Case "<<count<<":"<<endl;if(n%2==0){memset (a,0,sizeof(a));memset (vis,0,sizeof(vis)); vis[1] = 1;a[0] = 1;dfs(1);}cout<<endl;}return 0;}
- joj 1195
- joj 1195
- JOJ 2257
- joj 2319
- joj 2653
- JOJ 2687
- joj 2693
- joj 2443
- joj 1173
- joj 1003
- joj 1066
- joj 1182
- joj 1509
- joj 2526
- joj 2426
- joj 1595
- joj 2346
- joj 1169
- Oracle中的大对象(long,long raw,clob,blob,nclob,bfile)
- Linux内核里的DebugFS
- oracle字段类型blob,clob,nclob
- 一个服务器多客户端
- 使用和管理(查看,创建,删除)MySQL索引
- joj 1195
- Linux 无线网络管理和连接
- 黑马----String,StringBuffer,基本数据类型对象包装类浅记
- 网站建设的经验分享
- Android应用开发之android菜单
- 酷点2.0
- 解决VC中classview视图类不见了的问题
- 进程管理
- 触发器的使用