1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,k,a[25]; 4 int hk;//这个是k个数加起来的和 5 int sum;//这个是个数(输出的那个) 6 int pdzhi(int x){//判断是否为质数 7 for(int i=2;i<x;i++){ 8 if(x%i==0) return 0; 9 } 10 return 1; 11 } 12 void sx(int xa,int b)//其中xa代表差几个够k个数,b表示选到了第几个数 对4个数里面进行逐个筛选 如123 124 132 134 13 { 14 if(xa==0) //选完了 也就是a==k 15 { 16 sum+=pdzhi(hk); 17 } 18 else { 19 b++; 20 for(int i=b;i<=n;i++) 21 { 22 hk+=a[i];//统计和 23 xa--; 24 sx(xa,i);//直接用递归列举 25 hk-=a[i];//对前面数字的一个小清空 1 2 3>1 2>1 26 xa++; 27 } 28 } 29 } 30 int main() 31 { 32 cin>>n>>k; 33 for(int i=1;i<=n;i++) 34 { 35 cin>>a[i]; 36 } 37 sx(k,0); 38 cout<<sum; 39 return 0; 40 }
标签:洛谷,int,选数,质数,个数,P1036 From: https://www.cnblogs.com/look-before-you-leap/p/17256246.html