题解
这题就比较简单了,就是个深度搜索。注意到每次构成都是素数,显然可以剪枝。
数据很小,非常简单。
代码
/*
PROG:sprime
ID:imking022
LANG:C++
*/
#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
int n,sum=0;
int reff[]={0,1,2,3,5,7,9};
bool isprm(int num){
if(num==1) return false;
for(int i=2;i*i<=num;i++){
if(num%i == 0) return false;
}
return true;
}
void deal(int n){
if(n==0){
cout<<sum<<endl;
return;
}
sum*=10;
for(int i=1;i<=6;i++){
sum+=reff[i];
if(isprm(sum)){
deal(n-1);
}
sum-=reff[i];
}
sum/=10;
}
int main(void){
int num;
cin>>num;
deal(num);
return 0;
}