代码有一点点长(暴力)
#include<bits/stdc++.h>
using namespace std;
int a[25];
int s,x,n,k;
bool ck_prime(int n)
{
if(n<2)
return false;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0)
return false;
return true;
}
void sum()
{
cin>>n>>k;
for (int i=1;i<=n;i++)
{
cin>>a[i];
x+=a[i];
}
}
void jisuan()
{
if(k==19 || k==n-1)
{
for(int i=1;i<=n;i++)
if(ck_prime(x-a[i]))
s++;
return;
}
if(k==20|| n==k)
{
if(ck_prime(x))
s++;
return;
}
if(k==1)
{
for(int i1=1; i1<=n; i1++)
if(ck_prime(a[i1]))
s++;
return ;
}
if(k==2)
{
for(int i1=1; i1<=n-1; i1++)
for(int i2=i1+1; i2<=n; i2++)
if(ck_prime(a[i1]+a[i2]))
s++;
return ;
}
if(k==3)
{
for(int i1=1; i1<=n-2; i1++)
for(int i2=i1+1;i2<=n-1;i2++)
for(int i3=i2+1;i3<=n;i3++)
if(ck_prime(a[i1]+a[i2]+a[i3]))
s++;
return;
}
if(k==4)
{
for(int i1=1; i1<=n-3; i1++)
for(int i2=i1+1; i2<=n-2; i1++)
for(int i3=i2+1; i3<=n-1; i2++)
for(int i4=i3+1; i4<=n; i4++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]))
s++;
return ;
}
if(k==5)
{
for(int i1=1; i1<=n-4; i1++)
for(int i2=i1+1;i2<=n-3;i2++)
for(int i3=i2+1;i2<=n-2;i2++)
for(int i4=i3+1;i3<=n-1;i3++)
for(int i5=i4+1;i4<=n;i4++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]))
s++;
return ;
}
if(k==6)
{
for(int i1=1;i1<=n-5;i1++)
for(int i2=i1+1;i2<=n-4;i2++)
for(int i3=i2+1;i3<=n-3;i3++)
for(int i4=i3+1;i4<=n-2;i4++)
for(int i5=i4+1;i5<=n-1;i5++)
for(int i6=i5+1; i6<=n; i6++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]))
s++;
return ;
}
if(k==7)
{
for(int i1=1;i1<=n-6;i1++)
for(int i2=i1+1;i2<=n-5;i2++)
for(int i3=i2+1;i3<=n-4;i3++)
for(int i4=i3+1;i4<=n-3;i4++)
for(int i5=i4+1;i5<=n-2;i5++)
for(int i6=i5+1; i6<=n-1; i6++)
for(int i7=i6+1; i7<=n; i7++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]))
s++;
return ;
}
if(k==8)
{
for(int i1=1;i1<=n-7;i1++)
for(int i2=i1+1;i2<=n-6;i2++)
for(int i3=i2+1;i3<=n-5;i3++)
for(int i4=i3+1;i4<=n-4;i4++)
for(int i5=i4+1;i5<=n-3;i5++)
for(int i6=i5+1; i6<=n-2; i6++)
for(int i7=i6+1; i7<=n-1; i7++)
for(int i8=i7+1; i8<=n; i8++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]+a[i8]))
s++;
return ;
}
if(k==9)
{
for(int i1=1;i1<=n-8;i1++)
for(int i2=i1+1;i2<=n-7;i2++)
for(int i3=i2+1;i3<=n-6;i3++)
for(int i4=i3+1;i4<=n-5;i4++)
for(int i5=i4+1;i5<=n-4;i5++)
for(int i6=i5+1; i6<=n-3; i6++)
for(int i7=i6+1; i7<=n-2; i7++)
for(int i8=i7+1; i8<=n-1; i8++)
for(int i9=i8+1; i9<=n; i9++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]+a[i8]+a[i9]))
s++;
return ;
}
if(k==10)
{
for(int i1=1;i1<=n-9;i1++)
for(int i2=i1+1;i2<=n-8;i2++)
for(int i3=i2+1;i3<=n-7;i3++)
for(int i4=i3+1;i4<=n-6;i4++)
for(int i5=i4+1;i5<=n-5;i5++)
for(int i6=i5+1; i6<=n-4; i6++)
for(int i7=i6+1; i7<=n-3; i7++)
for(int i8=i7+1; i8<=n-2; i8++)
for(int i9=i8+1; i9<=n-1; i9++)
for(int i10=i9+1; i10<=n; i10++)
if(ck_prime(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]+a[i8]+a[i10]))
s++;
return ;
}
if(k==11)
{
for(int i1=1;i1<=n-8;i1++)
for(int i2=i1+1;i2<=n-7;i2++)
for(int i3=i2+1;i3<=n-6;i3++)
for(int i4=i3+1;i4<=n-5;i4++)
for(int i5=i4+1;i5<=n-4;i5++)
for(int i6=i5+1; i6<=n-3; i6++)
for(int i7=i6+1; i7<=n-2; i7++)
for(int i8=i7+1; i8<=n-1; i8++)
for(int i9=i8+1; i9<=n; i9++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]+a[i8]+a[i9])))
s++;
return ;
}
if(k==12)
{
for(int i1=1;i1<=n-7;i1++)
for(int i2=i1+1;i2<=n-6;i2++)
for(int i3=i2+1;i3<=n-5;i3++)
for(int i4=i3+1;i4<=n-4;i4++)
for(int i5=i4+1;i5<=n-3;i5++)
for(int i6=i5+1; i6<=n-2; i6++)
for(int i7=i6+1; i7<=n-1; i7++)
for(int i8=i7+1; i8<=n; i8++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7]+a[i8])))
s++;
return ;
}
if(k==13)
{
for(int i1=1;i1<=n-6;i1++)
for(int i2=i1+1;i2<=n-5;i2++)
for(int i3=i2+1;i3<=n-4;i3++)
for(int i4=i3+1;i4<=n-3;i4++)
for(int i5=i4+1;i5<=n-2;i5++)
for(int i6=i5+1; i6<=n-1; i6++)
for(int i7=i6+1; i7<=n; i7++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6]+a[i7])))
s++;
return ;
}
if(k==14)
{
for(int i1=1;i1<=n-5;i1++)
for(int i2=i1+1;i2<=n-4;i2++)
for(int i3=i2+1;i3<=n-3;i3++)
for(int i4=i3+1;i4<=n-2;i4++)
for(int i5=i4+1;i5<=n-1;i5++)
for(int i6=i5+1; i6<=n; i6++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3]+a[i4]+a[i5]+a[i6])))
s++;
return ;
}
if(k==15)
{
for(int i1=1; i1<=n-4; i1++)
for(int i2=i1+1;i2<=n-3;i2++)
for(int i3=i2+1;i2<=n-2;i3++)
for(int i4=i3+1;i3<=n-1;i4++)
for(int i5=i4+1;i4<=n;i4++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3]+a[i4]+a[i5])))
s++;
return ;
}
if(k==16)
{
for(int i1=1; i1<=n-3; i1++)
for(int i2=i1+1; i2<=n-2; i2++)
for(int i3=i2+1; i3<=n-1; i3++)
for(int i4=i3+1; i4<=n; i4++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3]+a[i4])))
s++;
return ;
}
if(k==17)
{
for(int i1=1; i1<=n-2; i1++)
for(int i2=i1+1;i2<=n-1;i2++)
for(int i3=i2+1;i3<=n;i3++)
if(ck_prime(x-(a[i1]+a[i2]+a[i3])))
s++;
return;
}
if(k==18)
{
for(int i1=1; i1<=n-1; i1++)
for(int i2=i1+1; i2<=n; i2++)
if(ck_prime(x-(a[i1]+a[i2])))
s++;
return ;
}
}
int main()
{
sum();
jisuan();
cout<<s;
}