社区讨论
33分蒟蒻求助!
P1036[NOIP 2002 普及组] 选数参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo8u7jl0
- 此快照首次捕获于
- 2023/10/28 00:38 2 年前
- 此快照最后确认于
- 2023/10/28 00:38 2 年前
代码如下:
CPP#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int n, m, a[21] = {}, c[21] = {}, total, ans = 0;
bool b[21] = {}, ac[500001] = {};
bool isPrime(int a){
for(int i = 2; i <= sqrt(a); i++){
if(a % i == 0){
return false;
}
}
return true;
}
void search(int k){
for(int i = 1; i <= n; i++){
if(!b[i]){
c[k] = a[i];
b[i] = true;
if(k == m){
total = 0;
for(int i = 1; i <= m; i++){
total += c[i];
}
if(isPrime(total)){
if(!ac[total]){
ans++;
ac[total] = true;
}
}
} else {
search(k + 1);
}
b[i] = false;
}
}
}
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
}
search(1);
printf("%d", ans);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...