zoukankan      html  css  js  c++  java
  • 南阳oj 题目 488 素数环

    素数环

    时间限制:1000 ms | 内存限制:65535 KB
    难度:2
    描述
    有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。

    为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。

    输入
    有多组测试数据,每组输入一个n(0<n<20),n=0表示输入结束。
    输出
    每组第一行输出对应的Case序号,从1开始。
    如果存在满足题意叙述的素数环,从小到大输出。
    否则输出No Answer。
    样例输入
    6
    8
    3
    0
    样例输出
    Case 1:
    1 4 3 2 5 6
    1 6 5 2 3 4
    Case 2:
    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
    Case 3:
    No Answer

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int k;
    int st;
    int state[20];
    int ring[20];
    int prime(int n)
    {
        for(int i=2;i*i<=n;i++)
        {
            if(n%i==0)
                return 0;
        }
        return 1;
    }
    void prime_ring(int m)
    {
        if(m==k&&prime(ring[1]+ring[k])==1)
        {
            for(int i=1;i<k;i++)
                printf("%d ",ring[i]);
            printf("%d
    ",ring[k]);
            st=1;
            return ;
        }
         for(int i=2;i<=k;i++)
         {
             if(state[i]==0&prime(i+ring[m])==1)
             {
                 state[i]=1;
                 ring[m+1]=i;
                 prime_ring(m+1);
                 state[i]=0;
             }
         }
    }
    int main()
    {
        int num=0;
        while(scanf("%d",&k)!=EOF)
        {
            if(k==0)
                break;
            memset(state,0,sizeof(state));
            memset(ring,0,sizeof(ring));
            printf("Case %d:
    ",++num);
            st=0;
            if(k==1)
            {
                printf("1
    "); continue;
            }
            if(k%2)
            {
                printf("No Answer
    "); continue;
            }
            ring[1]=1;
            prime_ring(1);
            if(st==0)
                printf("No Answer
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    一览js模块化:从CommonJS到ES6
    JavaScript自定义事件
    BTrace:线上问题排查工具
    【转载】JVM 学习——垃圾收集器与内存分配策略
    简单GC具体操作参数查看
    CMS垃圾回收机制
    Lombok 在继承类上面的注意
    Intellij IDEA 修改默认配置
    缓存算法(FIFO 、LRU、LFU三种算法的区别)
    MySQL 变量类型
  • 原文地址:https://www.cnblogs.com/nanfenggu/p/7900111.html
Copyright © 2011-2022 走看看