2319__1.5.3 Superprime Rib 特殊的质数肋骨

[Submit][Status][Forum]

Description

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

Input

单独的一行包含N。

Output

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

Sample Input

4

Sample Output

2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393

分析:还是没有完全理解到递归的思想,想不到递归那去。想了很久也没搞定,在网上找了题解,所以这题用递归。不管是几位数,它的第一个数一定是,2,3,5,7,确定了第一个数,第二个数之后的数就在(1,9)之间遍历,如果是素数并且位数等于所给的位数就输出。终止条件就是满足条件的位数等于所给的位数。
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cmath>
 5 using namespace std;
 6 int n;
 7 int prime(int m)//判断是否为素数数
 8 {
 9     int k,i;
10     k=sqrt(m);
11     for(i=2;i<=k;i++)
12     {
13         if(m%i==0)
14             break;
15     }
16     if(i==k+1)
17         return 1;
18     return 0;
19
20 }
21 void judge(int primer,int pos)//primer是质数,pos是位数
22 {
23     if(pos==1)
24     {
25         judge(2,2);
26         judge(3,2);
27         judge(5,2);
28         judge(7,2);//当只有一位的时候
29     }
30     else
31     {
32         for(int i=1;i<=9;i++)
33         {
34             if(prime(primer*10+i)==1)//构造位数为pos+1的数
35             {
36                 if(pos==n)
37                     printf("%d\n",primer*10+i);//如果位数等于所给的位数
38                 else
39                 {
40                     judge(primer*10+i,pos+1);//否则,位数+1,继续递归下去;
41                 }
42             }
43         }
44     }
45 }
46 int main()
47 {
48     while(~scanf("%d",&n))
49     {
50         if(n==1)
51         {
52             printf("2\n3\n5\n7\n");//当位数为1的时候直接输出
53         }
54         else
55         {
56             judge(0,1);//否则进入judge,从位数pos=1开始找
57         }
58     }
59     return 0;
60 }


原文地址:https://www.cnblogs.com/LLLAIH/p/9723161.html

时间: 2024-08-02 05:49:47

2319__1.5.3 Superprime Rib 特殊的质数肋骨的相关文章

[USACO1.5]Superprime Rib

## Superprime Rib 特殊的质数肋骨## [题意] 给定位数n(1≤n≤8),要求找出n位数中的质数,并满足每次将最后一位去掉仍为质数.(如质数7331,733是质数,73是质数,7也是质数) [输入格式] 单独的一行包含 n. [输出格式] 按顺序输出长度为 n 的特殊质数,每行一个. [输入样例] 4 [输出样例] 2333 2339 2393 2399 2939 3119 3137 3733 3739 3793 3797 5939 7193 7331 7333 7393 特别

洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib

P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 284通过 425提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 超时怎么办? 题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二

P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib (数论—素数 + DFS)

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

P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib

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

USACO 1.5 Superprime Rib

Superprime Rib Butchering Farmer John's cows always yields the best prime rib. You can tell prime ribs by looking at the digits lovingly stamped across them, one by one, by FJ and the USDA. Farmer John ensures that a purchaser of his prime ribs gets

洛谷P1218 [USACO1.5]特殊的质数肋骨 搜索

P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 题意 找出所有 n 位的十进制数要求其每一个前缀均为质数 搜索 加两个剪枝 , 1.最高位有4种选择 ,可以选择 2 3 5 7 然后其他位只有 5 种选择 选 1 3 5 7 9 2.高位向低位枚举 这样 枚举的时候如果当前这个数已经不满足质数肋骨 那就直接 跳出,这是一个小优化 即一边做一边判断 是否为质数 这样就能剪掉很多 1 #include <cstdio> 2 #include <cmath>

【USACO 1.5.2】特殊的质数肋骨

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

Codevs 2080 特殊的质数肋骨

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

USACO 1.5.3 SuperPrime Rib

The set of ribs denoted by 7331 is prime; the three ribs 733 are prime; the two ribs 73 are prime, and, of course, the last rib, 7, is prime. The number 7331 is called a superprime of length 4. Write a program that accepts a number N 1 <=N<=8 of rib