题解:P12233 [蓝桥杯 2023 国 Java A] X 质数
lczhouzihao · · 题解
一串判断质数的函数:
bool p(int n){
if(n<=1)return false;
if(n==2)return true;
if(n%2==0)return false;
for(int i=3;i*i<=n;i+=2)
if(n%i==0)return false;
return true;
}
这里应该没人不会吧。
接着,我们只需枚举每个数,对于每个数,暴力枚举出它删掉
AC code
#include<bits/stdc++.h>
using namespace std;
bool p(int n){
if(n<=1)return false;
if(n==2)return true;
if(n%2==0)return false;
for(int i=3;i*i<=n;i+=2)
if(n%i==0)return false;
return true;
}
bool dfs(string&s,int idx,string&cur){
if(idx==s.size()){
if(cur.empty()||(cur[0]=='0'&&cur.size()>1))return false;
return p(stoi(cur));
}
if(dfs(s,idx+1,cur))return true;
int len=cur.size();
cur+=s[idx];
bool res=dfs(s,idx+1,cur);
cur.resize(len);
return res;
}
bool c(string&s){
string cur="";
return dfs(s,0,cur);
}
int main(){
int cnt=0;
for(int i=1;i<=1000000;i++){
string s=to_string(i);
if(c(s))cnt++;
}
cout<<cnt;
return 0;
}
最终答案: