zoukankan      html  css  js  c++  java
  • 【USACO 1.5.3】特殊的质数肋骨

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

    INPUT FORMAT: (file sprime.in) 
    单独的一行包含N。 
    OUTPUT FORMAT: (file sprime.out) 
    按顺序输出长度为 N 的特殊质数,每行一个。 

    【分析】

    与上一道题目的方法差不多。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <algorithm>
     6 #include <queue>
     7 const int Max=10000000;
     8 using namespace std;
     9 int n,ans[Max],point=0;
    10 void work(int num,int len);//len代表的数字的长度 
    11 bool prime(int num);
    12 int main()
    13 {
    14     //文件操作 
    15     freopen("sprime.in","r",stdin);
    16     freopen("sprime.out","w",stdout);
    17     scanf("%d",&n); 
    18     for (int i=1;i<=9;i++) 
    19     if (prime(i)) work(i,1);
    20     
    21     sort(ans,ans+point);
    22     for (int i=0;i<point;i++) printf("%d
    ",ans[i]);
    23     return 0;
    24 }
    25 bool prime(int num)
    26 {
    27      if (num==1) return 0;
    28      if (num==2) return 1;
    29      for (int i=2;i<=(int)sqrt((double)num)+1;i++) if (num%i==0) return 0;
    30      return 1;
    31 }
    32 void work(int num,int len)
    33 {
    34      if (len>n) return;
    35      if (len==n) {ans[point++]=num;return;}
    36      for (int i=0;i<=9;i++)
    37      if (prime(num*10+i)) work(num*10+i,len+1);
    38 }
  • 相关阅读:
    【转】深入分析事务的隔离级别
    gluoncv 用已经训练好的模型参数,检测物体
    gluoncv 目标检测,训练自己的数据集
    SMB linux&windows共享文件
    VOC 数据集
    yaml 配置文件
    SSD 单发多框检测
    目标检测数据集(皮卡丘)
    zip 函数
    输出预测边界框,NMS非极大值抑制
  • 原文地址:https://www.cnblogs.com/hoskey/p/3787709.html
Copyright © 2011-2022 走看看