USACO 1.5 SuperPrime Rib

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 ;
}




你可能感兴趣的:(USACO 1.5 SuperPrime Rib)