算法习题及解答

算法习题及解答

ID:37569087

大小:114.50 KB

页数:18页

时间:2019-05-25

算法习题及解答_第1页
算法习题及解答_第2页
算法习题及解答_第3页
算法习题及解答_第4页
算法习题及解答_第5页
资源描述:

《算法习题及解答》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一个自然数可以写成若干个小于等于自己的自然之和,这叫该自然数的一个分解。不同的分解是表示这个自然数分解成的所有自然数不完全相同。例如:3=2+1和3=1+1+1表示不同的分解。而3=2+1和3=1+2为相同的分解。现在的任务是,给出一个自然数,要求所有不同的分解方案数。输入:输入文件的只有一个自然数N,N<=10000。(input.txt)输出:输出文件只有一个数,为N的分解方案数。(output.txt)varn:integer;x:integer;a:array[0..10000]ofinteger;procedurewritestr();vari:

2、integer;beginwrite(n,'=',a[1]);fori:=2toxdobeginwrite('+',a[i]);end;writeln;end;functionadda():integer;vars:integer;i:integer;begins:=0;fori:=1toxdos:=s+a[i];adda:=s;end;functiontest(m:integer):boolean;vari:integer;beginifm<0thenbeginx:=x-2;exit(false);end;ifm=0thenbeginwritestr()

3、;x:=x-2;exit(false);end;fori:=a[x]ton-1dobeginx:=x+1;a[x]:=i;if(nottest(n-adda()))thenbeginexit(true);end;end;test:=true;end;beginassign(input,'input.txt');assign(output,'output.txt');reset(input);rewrite(output);read(n);x:=0;a[0]:=1;test(n);close(input);close(output);end.我们知道,所谓的

4、卡列列克运算,是指任意一个四位数,只要它们各个位上的数不全相同,就有这样的规律:程序名为step.pas把组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;把组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则此数不足四位);求出以上两数之差,得到一个新的四位数。重复以上过程,总能得到最后结果是6174。试编写一个程序,实现卡布列克运算,要求以下面的格式输出全部运算过程和结果,统计需要运算的步数(如下例为3步)。输出格式:n=53466543-3456=30878730-378=8352

5、8532-2358=6174SETP=3varn:integer;x,max,min:integer;proceduregetmaxmin(m:integer);vara:array[1..4]ofinteger;i,j,tmp:integer;begini:=1;whilem>0dobegina[i]:=mmod10;m:=mdiv10;i:=i+1;end;fori:=3downto1dobeginforj:=1toidobeginifa[j]>a[j+1]thenbegintmp:=a[j];a[j]:=a[j+1];a[j+1]:=tmp;end;

6、end;end;max:=1000*a[4]+100*a[3]+10*a[2]+a[1];min:=1000*a[1]+100*a[2]+10*a[3]+a[4];end;proceduretest(m:integer);vari:integer;beginifm=6174thenbeginwrite('SETP=',x);halt;end;getmaxmin(m);writeln(max,'-',min,'=',max-min);x:=x+1;test(max-min);end;beginassign(input,'input.txt');assign(

7、output,'output.txt');reset(input);rewrite(output);read(n);writeln('n=',n);x:=0;test(n);close(input);close(output);end.253、溢出over.pas问题描述写一个程序,读入两个非负整数及一个运算符号判断两整数及运算结果是否超出了PASCAL语言中关于长整数类型的定义。(长整数范围为-2147483648到2147483647)输入文件一行包含整数和运算符,运算符(‘+’,‘-’,‘*’,‘div’)输出文件先输出一遍原输入,并在后面输出0到3

8、行适当内容,如:firstnumberistoobigsecond

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。