P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
https://www.luogu.com.cn/problem/P1218
我的ac代码,判断x是不是素数的范围是2~根号x,用递归写的,然后…后来看了题解,原来这就叫DFS,菜鸡落泪,在完全不会DFS的情况下写出了DFS…….
#include<iostream>
#include<cstdlib>
#include<vector>
#include<ctime>
#include<algorithm>
#include<cmath>
using namespace std;
int isPrime(int a){
if(a == 1){
return 0;
}
if(a == 2 || a == 3){
return 1;
}
int num = sqrt(a);
for (int i = 2; i <= num;i++){
if(a % i == 0){
return 0;
}
}
return 1;
}
void func2(int num, int n){
if((num > pow(10,n-1)) && (num < pow(10,n) - 1)){
cout << num << endl;
return;
}
else{
num *= 10;
for (int i = 1; i < 10; i += 2){
if(isPrime(num + i)){
func2(num + i, n);
}
}
}
return;
}
int func(int n){
func2(2, n);
func2(3, n);
func2(5, n);
func2(7, n);
return 1;
}
int main(){
int n;
cin >> n;
func(n);
return 0;
}