作业帮 > 综合 > 作业

自然数有序拆分pascal

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/05 12:10:40
自然数有序拆分pascal
【问题描述】
任何一个大于1的自然数总可以拆分成若干个自然数之和.例如n=4,
4=1+1+1+1
4=1+1+2
4=1+3
4=2+2
var
top,j,n,m:integer;
s:array[0..100] of integer;
procedure print;
var i:integer;
begin
if s[1]n then
write(n,'=',s[1]);
for i:=2 to top do write('+',s[i]);
writeln;
end;
function sum(top:integer):integer;
var i,t:integer;
begin
t:=0;
for i:=1 to top do t:=t+s[i];
sum:=t;
end;
function cr(top:integer):boolean;
var i:integer;
begin
cr:=true;
for i:=1 to top-1 do
if s[i]>s[i+1] then cr:=false;
end;
begin
assign(input,'cf.in');
assign(output,'cf.out');
reset(input);
rewrite(output);
fillchar(s,sizeof(s),0);
read(n);
top:=1;
repeat
inc(s[top]);m:=sum(top);
if m