#include<iostream>
#include<cmath>
using namespace std
;
int x
[20], n
, k
;
bool isPrime(int n
)
{
for (int i
= 2; i
<= sqrt(n
); i
++)
{
if (n
%i
== 0)
return false;
}
return true;
}
int rule(int choose_left_num
, int already_sum
, int start
, int end
)
{
if (choose_left_num
== 0)
return isPrime(already_sum
);
int sum
= 0;
for (int i
= start
; i
<= end
; i
++)
sum
+= rule(choose_left_num
- 1, already_sum
+ x
[i
], i
+ 1, end
);
return sum
;
}
int main() {
cin
>> n
>> k
;
for (int i
= 0; i
<n
; i
++)cin
>> x
[i
];
cout
<< rule(k
, 0, 0, n
- 1);
}
看了好几个小时才看懂洛谷题解的递归
转载请注明原文地址: https://yun.8miu.com/read-136096.html