pascal vijosP1128 不太明白???

来源:百度知道 编辑:UC知道 时间:2024/07/07 01:33:39
我没学多长时间,基础的也不太会,希望牛人帮帮我看看我编的哪里出错了

已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。
现在,要求你计算出和为素数共有多少种。
例如上例,只有一种的和为素数:3+7+19=29)。
输入格式 Input Format
n , k (1<=n<=20,k<n)
x1,x2,…,xn (1<=xi<=5000000

输出格式 Output Format
一个整数(满足条件的种数)。
样例输入 Sample Input
4 3
3 7 12 19

样例输出 Sample Output
1
------------------------------------
var
n,k,i,bomb,l:integer;
Data,Add:array[1..20] of longint;
a:array[0..20] of integer;
num:longint;
procedure Find(lev:integer);
var p,q:integer;
begin
if lev=k+1 then
begin
for p:= 1 to k do inc(Add[l],Data[a[p]]);
inc(l);
exit;
end;
for q:= 1 to n do
if q>a[lev-1] then

program jj;
var n,m,i,j,k,l:integer;
a:array[1..10000] of integer;
b:array[1..10000] of integer;
function sfs(n:integer):boolean;
var i:integer;
begin
sfs:=true;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then begin sfs:=false; break end;
end;
procedure search(x,y:integer);
VAR i,j,l:integer;
begin
l:=0;
if x=k+1 then begin
for j:=1 to k do begin l:=l+a[j]; end;
if sfs(l)=true then m:=m+1;
end
else for i:=y to n do
begin
a[x]:=b[i];
search(x+1,i+1);
a[x+1]:=0;
end;
end;
begin
readln(n,k);
for i:=1 to n do
read(b[i]);
search(1,1);
writeln(m);
end.
水题

begin
readln(n,k);
bomb:=0;l:= 1;
for i:= 1 to n do
read(Data[i]);
Find(1);
num:= 1;
for i:= 1 to l-1 do
Sushu(Add[i]);
writeln(bomb)
end.

你看它错误提示,明显你输出有问题,应该是行跟他要读的行没照上。你怎么不用WRITELN和rea