用 0,1,2,3 … 7 这 8 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。
提示:以 0 开始的数字是非法数字。
鄙人不才,直接暴力枚举。素数筛表,遍历,检查是否8个数字不重不漏。
正确答案:2668
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 76543211;
int a[maxn],c[10];
bool judge(int x){
memset(c,0,sizeof(c));
while(x){
c[x%10]++;
x/=10;
}
for(int i=0;i<8;++i){
if(c[i]!=1)return false;
}
return true;
}
int main(){
a[0]=a[1]=1;
for(int i=2;i*i<=maxn;i++){
for(int j=i*i;j<maxn;j+=i){
a[j]=1;
}
}
int res=0;
for(int i=10234567;i<=maxn;i++){
if(a[i]==0&&judge(i)){
res++;
}
}
cout<<res<<endl;
return 0;
}