记录编号 |
165949 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2002]选数 |
最终得分 |
100 |
用户昵称 |
<蒟蒻>我要喝豆奶 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2015-06-13 15:29:02 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
inline int in()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9')c=getchar();
for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
return x;
}
bool P(int l)
{
if(l==0||l==1)
return 0;
if(l>=2)
{
int c=2;
while(c<=floor(sqrt(l))&&(l%c!=0))
c=c+1;
if(c>floor(sqrt(l)))
return 1;
else
return 0;
}
}
bool vis[102];
int n,k;
int ans;
int a[2015];
void work(int o,int k,int sum)
{
vis[o]=1;
if(k==0)
{
vis[o]=0;
// cout<<sum<<" ";
if(P(sum)==1)
ans++;
return ;
}
for(int i=o+1;i<=n;i++)
if(vis[i]==0)
work(i,k-1,sum+a[i]);
vis[o]=0;
return ;
}
int main()
{
freopen("choose.in","r",stdin);
freopen("choose.out","w",stdout);
n=in();
k=in();
for(int i=1;i<=n;i++)
a[i]=in();
work(0,k,0);
printf("%d",ans);
//system("pause");
return 0;
}