【luoguP1218】

 果断dfs

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a=0;
int b=13939133,cnt;
bool pr[100000009];
int f[100000009],cun[10000000];
void jud() {
	memset(pr, true, sizeof(pr));
	pr[0]=pr[1]=false;
	int mx=sqrt(b);
	for(int i=2;i<=mx;i++)
	  if(pr[i]) {
	  	for(int j=2;j<=b/i;j++)
	  	  pr[i*j]=false;
	  }
}
void dfs(int t) {
	int s;
	if(t==n+1) {
	  cout<<a<<endl;
	  return ;
	}
	if(t==1) s=1;
	  else s=0; 
	for(int i=s;i<=9;i++) {
		if(pr[a*10+i]==true) {
			a=a*10+i;
			dfs(t+1);
			a=a/10;
		}
	}
}
int main() {
	cin>>n;
	jud();
    dfs(1);
    return 0;
}

埃式筛tle一个点emmm………………

欧拉筛mle emmm……

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a=0;
bool prime(int x)
{
    if(x==1) return 0;
    if(x==2) return 1;
    for(int i=2;i<=sqrt(x);i++)
          if(x%i==0)
            return 0;
        return 1;
}
void dfs(int t) {
	int s;
	if(t==n+1) {
	  cout<<a<<endl;
	  return ;
	}
	if(t==1) s=1;
	  else s=0; 
	for(int i=s;i<=9;i++) {
		if(prime(a*10+i)==1) {
			a=a*10+i;
			dfs(t+1);
			a=a/10;
		}
	}
}
int main() {
	cin>>n;
    dfs(1);
    return 0;
}

这个算法竟然A 惊?!?!?!??!

猜你喜欢

转载自blog.csdn.net/syh8501/article/details/88878105