[USACO1.5]特殊的质数肋骨 Superprime Rib-洛谷 1218
2017-02-07 19:26
507 查看
题目描述 农民约翰的母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 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 题解:这道题用简单的深搜即可,先判断一下是不是质数。 var n:longint; a:array[1..8,1..4] of longint; b:array[1..8] of longint; procedure init; var i,j:longint; begin readln(n); a[1,1]:=2; a[1,2]:=3; a[1,3]:=5; a[1,4]:=7; for i:=2 to 8 do begin a[i,1]:=1; a[i,2]:=3; a[i,3]:=7; a[i,4]:=9; end; end; function ss(x:longint):boolean; var j:longint; begin ss:=true; for j:=2 to trunc(sqrt(x)) do if x mod j=0 then begin ss:=false; break; end; end; procedure dfs(dep,s:longint); var i,j,k:longint; begin if dep>n then begin for i:=1 to n do write(b[i]); writeln; exit; end; for i:=1 to 4 do if ss(s*10+a[dep,i]) then begin b[dep]:=a[dep,i]; dfs(dep+1,s*10+a[dep,i]); end; end; begin init; dfs(1,0); end.
相关文章推荐
- 【洛谷 1218】[USACO1.5]特殊的质数肋骨 Superprime Rib
- 洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
- 【枚举】洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
- 【USACO】洛谷1218 特殊的质数肋骨 Superprime Rib
- 洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
- [USACO1.5]特殊的质数肋骨 Superprime Rib
- USACO 1.5 Superprime Rib 特殊的质数肋骨(模拟)
- USACO 1.5 特殊的质数肋骨 Superprime Rib
- 洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
- USACO1.5 特殊的质数肋骨 Superprime Rib
- USACO:1.5.3 Superprime Rib 特殊的质数肋骨
- Superprime Rib_特殊的质数肋骨_usaco1.5_codevs2080_dfs
- USACO-1.5.3 Superprime Rib 特殊的质数肋骨
- 一大堆的福利之【USACO题库】Superprime Rib特殊的质数肋骨
- USACO1.5.3 Superprime Rib 特殊的质数肋骨【DFS】
- JZOJ1255.【USACO题库】1.5.3 Superprime Rib特殊的质数肋骨
- USACO:1.5.3 Superprime Rib 特殊的质数肋骨
- Superprime Rib特殊的质数肋骨
- [USACO1.5]特殊的质数肋骨
- YTU.1420: 1.5.3 Superprime Rib 特殊的质数肋骨