luyao777 2010-10-24 04:20:00
点我顶贴
收藏
删除
var i,j,n,p,ans:longint;
x:array[1..20]of longint;
function ok(a:longint):boolean;
var i:longint;
begin
ok:=true;
for i:=2 to trunc(sqrt(a)) do
if a mod i=0 then exit(false);
end;
procedure dfs(dep,k,t:longint);
begin
if t=p then
begin
if ok(k) then inc(ans);
exit;
end;
if dep=n then exit;
dfs(dep+1,k+x[dep+1],t+1);
dfs(dep+1,k,t);
end;
begin
readln(n,p);
ans:=0;
for i:=1 to n do read(x[i]);
dfs(0,0,0);
writeln(ans);
end.