dong 2009-05-19 07:50:00
点我顶贴
收藏
删除
我用组合+判素,不知道哪错了,就40。
program rq67;
var n,k,i,ans,sum:longint;
a,b,c:array[1..20]of longint;
function ss(x:longint):boolean;
var i:longint;
begin
for i:=2 to trunc(sqrt(x)) do
if (x mod i)=0 then exit(false);
ss:=true;
end;
procedure dfs(x:longint);
var sum:longint;
begin
if x=0 then exit;
inc(b[x]);
while (b[x]<=c[x]) do
begin
sum:=0;
for i:=1 to k do sum:=sum+a[b[i]];
if ss(sum) then inc(ans);
inc(b[x]);
end;
dec(b[x]);
dfs(x-1);
end;
begin
readln(n,k);
for i:=1 to n do
begin
read(a[i]);
b[i]:=i;
c[i]:=n-k+i;
end;
for i:=1 to k do sum:=sum+a[b[i]];
if ss(sum) then inc(ans);
dfs(k);
writeln(ans);
end.