#include<bits/stdc++.h>
using namespace std;
vector<int> results;
vector<int> combination;
vector<int>arr;
void find(int k, int start)
{
if (combination.size() == k)
{
int sum = 0;
for (int num : combination)
{
sum += num;
}
results.push_back(sum);
return;
}
for (int i = start;i < arr.size(); i++)
{
combination.push_back(arr[i]);
find(k, i + 1);
combination.pop_back();
}
}
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main()
{
int n, k;
cin >> n >> k;
arr = vector<int>(n, 0);
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
find(k, 0);
int cnt = 0;
for (int sum : results)
{
if (isPrime(sum))
cnt++;
}
cout << cnt;
}
P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
vector<int>vrr;
vector<vector<int>>arr;
vector<int>combination;
vector<int>yanzheng;
int v, g;
void find(int k, int start)
{
if (combination.size() == k)
{
for (int num : combination)
{
for (int i = 0; i < v; i++)
{
yanzheng[i] +=arr[num][i];
}
}
int cnt = 0;
for (int i = 0; i < v; i++)
{
if (yanzheng[i] >= vrr[i])
{
cnt++;
}
}
if (cnt == v)
{
cout << k << " ";
for (int num : combination)
{
cout << num+1 << " ";
}
exit(0);
}
yanzheng = vector<int>(v, 0);
return;
}
for (int i = start; i < g; i++)
{
combination.push_back(i);
find(k, i + 1);
combination.pop_back();
}
}
int main()
{
cin >> v;
vrr=vector<int>(v, 0);
yanzheng = vector<int>(v, 0);
for (int i = 0; i < v; i++)
{
cin >> vrr[i];
}
cin >> g;
arr=vector<vector<int>>(g, vector<int>(v, 0));
for (int i = 0; i < g; i++)
{
for (int j = 0; j < v; j++)
{
cin >> arr[i][j];
}
}
for (int i = 1; i <= g; i++)
{
find(i, 0);
combination.clear();
}
}