社区讨论

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 条回复,欢迎继续交流。

正在加载回复...