USACO 1.5 SuperPrime Rib

向每个素数右边加一个数,然后判断是否仍是素数,直到长度为n.


#include 
<iostream>
#include 
<fstream>

using namespace std;

ifstream fin(
"sprime.in");
ofstream fout(
"sprime.out");

#ifdef _DEBUG
#define out cout
#define in cin
#else
#define out fout
#define in fin
#endif

int n;

// num>=2
bool is_prime(int num)
{

    
for(int i=2;i*i<=num;++i){
        
if(num%i==0)
            
return false;
    }

    
return true;
}

void dfs(int num,int depth)
{
    
if( is_prime(num) ){
        
if(depth==n){
            
out<<num<<endl;
        }
else{
            
for(int i=1;i<10;++i){
                dfs(num
*10+i,depth+1);
            }
        }
    }
}

void solve()
{
   
in>>n;

   dfs(
2,1);
   dfs(
3,1);
   dfs(
5,1);
   dfs(
7,1);
}

int main(int argc,char *argv[])
{
  solve();
  
return 0;
}




posted on 2009-06-13 14:51 YZY 阅读(1140) 评论(0)  编辑 收藏 引用 所属分类: AlgorithmUSACO


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

积分与排名

最新评论

阅读排行榜