zoukankan      html  css  js  c++  java
  • 洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib

    题目描述

    农民约翰的母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。 7331 被叫做长度 4 的特殊质数。写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数。数字1不被看作一个质数。

    输入输出格式

    输入格式:

     

    单独的一行包含N。

     

    输出格式:

     

    按顺序输出长度为 N 的特殊质数,每行一个。

     

    输入输出样例

    输入样例#1: 复制
    4
    
    输出样例#1: 复制
    2333
    2339
    2393
    2399
    2939
    3119
    3137
    3733
    3739
    3793
    3797
    5939
    7193
    7331
    7333
    7393
    

    说明

    题目翻译来自NOCOW。

    USACO Training Section 1.5

    思路:搜索。

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm> 
    using namespace std;
    int a[1000],n;
    bool judge(int x){
        int k=sqrt(x);
        if(x==1)    return 0;
        else if(x==2||x==3)    return 1;
        else for(int i=2;i<=k;i++)
                if(x%i==0) return 0;
        return 1;
    }                                       
    void dfs(int step){              
        if(step==n){
            cout<<a[step]<<endl;
            return ;
        }                    
        for(int i=1;i<=9;i++)
            if(judge(10*a[step]+i)){
               a[step+1]=10*a[step]+i;
               dfs(step+1);
            }
    } 
    int main(){
        scanf("%d",&n);
        dfs(0);
    }   
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    线程同步锁的使用方式
    EventBus简单封装
    Dagger2不自动生成daggerXXXcomponent
    android mvp模式
    第八天
    单词统计续
    学习进度第十一周
    第七天
    第六天
    第五天
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7896877.html
Copyright © 2011-2022 走看看