1 条题解
-
0
C++ :
#include <cstdio> #include <algorithm> int isP(long long x){ if(x < 2) return 0; if(x % 2 == 0) return x == 2; for(long long i=3; i*i<=x; i+=2) if(x % i == 0) return 0; return 1; } int main(){ int n; if(scanf("%d", &n) != 1) return 0; int d[8]; for(int i=0;i<n;i++) scanf("%d", &d[i]); long long best = -1; /* 枚举非空子集;对每个子集枚举全排列 */ for(int mask = 1; mask < (1 << n); mask++){ int sub[8], L = 0; for(int i=0;i<n;i++) if(mask & (1 << i)) sub[L++] = d[i]; std::sort(sub, sub + L); do { if(sub[0] == 0) continue; long long v = 0; for(int i=0;i<L;i++) v = v * 10 + sub[i]; if(isP(v) && v > best) best = v; } while(std::next_permutation(sub, sub + L)); } printf("%lld\n", best); return 0; }
- 1
信息
- ID
- 2786
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者