数据太水了
查看原帖
数据太水了
1135662
Yuyukoo楼主2025/1/13 23:47

完全没有考虑值大于5000000时是否为质数。

hack数据:
3 2
500000 4000000 3000000

//错误程序,但仍能通过此题
#include <iostream>
using namespace std;
const int N = 22;
int a[N];

bool isPrime(int n){
    if(n >= 5000000) return 0; //==
	if (n <= 1 || n == 4) return 0;
	if (n == 2 || n == 3) return 1;
	if (n % 6 != 1 && n % 6 != 5) return 0;
	for (int i = 5; i <= n/i; i += 6) {
		if (n % i == 0 || n % (i + 2) == 0) return 0;
	}
	return 1;
}

int main(){
	int n,m;cin >> n >> m;
	for(int i = 0;i < n;i++){
		cin >> a[i];
	}
	int ans = 0;
	for(int i = 1;i < 1 << n;i++){
		int now = 0;
		int cnt = 0;
		for(int k = 0;k < n;k++){
			if(i >> k & 1) {
				cnt++;
				now += a[k];
			}
		}
		if(cnt == m) {
			if(isPrime(now)) ans++;
		}
	}
	cout << ans;
}
2025/1/13 23:47
加载中...