|
由键盘输入N, B={1,2,...,N}为连续N个整数的集合, 取B中若干不同的整数, 使这些整数之和为给定的M, 共有多少种不同的取法?
program lxw004; var m,n,i:integer; s:longint; function aa(k,m:integer):longint; var i,t1,kz:integer; temp:longint; begin if (k>m) or (k=1)and(m>1) or (k=0)and(m>0) then begin aa:=0; exit end; if k=m then begin aa:=1; exit end; temp:=0; {处理 k<m的情形} t1:=m-k; kz:=k-1; if kz>m-k then kz:=m-k; for i:=1 to kz do temp:=temp+aa(i,t1); aa:=temp; end; begin writeln("输入最大整数:"); readln(n); writeln("输入定和数:"); readln(m); s:=0; for i:=1 to n do s:=s+aa(i,m); writeln("计算结果:",s); end. |