Usaco 1.5.3 特殊的质数肋骨(特殊的质数肋骨)

题目:

 特殊的质数肋骨

来源:

 Usaco1.5.3

题目大意:

 求N位数,其所有数都满足从右开始删除,保证左边的数依旧为质数,输出这些数

数据范围:

 1<=N<=8

样例:

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

做题思路:

 根据题意可知,保证删除最后一位后还能成素数,所以除第一位其他位只能为1、3、7、9,  第一位只能为2、3、5、7,据此dfs吧,每向下搜一层判断下是否为质数即可

知识点:

 质数判断、数序规律

{
ID:Dount Nameless
TASK:sprime
LANG:PASCAL
}
var
 n:longint;
function pd(x:longint):boolean;{<>判断质数}
var
 i:longint;
begin
 fori:=2 to trunc(sqrt(x)) do
  ifx mod i =0 then exit(false);
 exit(true);
end;
procedure dfs(x,h:longint);
begin
 ifnot pd(x) then exit;
 ifh=n then
 begin
  writeln(x);
  exit;
 end;
 dfs(x*10+1,h+1);
 dfs(x*10+3,h+1);
 dfs(x*10+7,h+1);
 dfs(x*10+9,h+1);
end;
begin
 assign(input,'sprime.in');reset(input);
 assign(output,'sprime.out');rewrite(output);
 readln(n);
 dfs(2,1);dfs(3,1);dfs(5,1);dfs(7,1);{<枚举第一位的情况>}
 close(input);close(output);
end.
题目来源: http://ace.delos.com/usacoprob2?a=RexmW8CclSt&S=sprime

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值