算法习题及解答

上传人:ji****n 文档编号:45694019 上传时间:2018-06-18 格式:DOC 页数:18 大小:114.50KB
返回 下载 相关 举报
算法习题及解答_第1页
第1页 / 共18页
算法习题及解答_第2页
第2页 / 共18页
算法习题及解答_第3页
第3页 / 共18页
算法习题及解答_第4页
第4页 / 共18页
算法习题及解答_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《算法习题及解答》由会员分享,可在线阅读,更多相关《算法习题及解答(18页珍藏版)》请在金锄头文库上搜索。

1、一个自然数可以写成若干个小于等于自己的自然之和,这叫该自然数的一个分解。不同的 分解是表示这个自然数分解成的所有自然数不完全相同。例如:3=2+1 和 3=1+1+1 表示不 同的分解。而 3=2+1 和 3=1+2 为相同的分解。现在的任务是,给出一个自然数,要求所有 不同的分解方案数。输入:输入文件的只有一个自然数 N,N0 dobeginai:=m mod 10;m:=m div 10;i:=i+1;end;for i:=3 downto 1 dobeginfor j:=1 to i dobeginif ajaj+1 thenbegintmp:=aj;aj:=aj+1;aj+1:=tmp

2、;end;end;end;max:=1000*a4+100*a3+10*a2+a1;min:=1000*a1+100*a2+10*a3+a4; end;procedure test(m:integer); vari:integer; beginif m=6174 thenbeginwrite(SETP=,x);halt;end;getmaxmin(m);writeln(max,-,min,=,max-min);x:=x+1;test(max-min); end;beginassign(input,input.txt);assign(output,output.txt);reset(input)

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

4、mber is too big result number is too big 例如: 输入 输出 300+3 300+3 300000*300000 300000*300000 result is too big9999999999999999999+1 9999999999999999 999+1first number is too bigresult number is too big 建议用 int64 来处理,范围大小是 (-9223372036854775808 . 9223372036854775807 )259、最大最小差(MaxMin) 问题描述: 现在有 N 个正整数,

5、每一次去掉其中 2 个数 a 和 b,然后加入一个数 a*b+1,这样最后只剩 下一个数 P。要求求出最大 的 P 记为 MaxP,最小的 p 记 MinP,和他们的差 K=MaxP-MinP。 对于给定的数列,编程计算出它的 Max,Min 和 K。 输入文件(MAXMIN.IN): 第一行是数列的长度 N(不超过 50) ,以下 N 行,每行一个正整数(不超过 2 位) 。 输出文件(MAXMIN.OUT): 输出一共三行,每行一个整数,依次为 max,min,K。 输入输出样例: MAXMIN.IN MAXMIN.OUT 2 1 1 2 2 0 vararr:array 0.49 of

6、integer;excepti:array 0.49 of integer;test:array 0.49 of integer;max,min,n:integer;procedure InitExcept(); vari:integer; beginfor i:=0 to n-1 doexceptii := -1; end;function IsIn(i:integer):boolean; varj:integer; beginfor j:=0 to n-1 dobeginif exceptij=i thenexit(true);end;IsIn:=false; end;procedure

7、writestr(); vari,r:integer; beginfor i:=0 to n-2 dobeginr:=testi*testi+1+1;testi+1:=r;end;if maxr thenmin:=r; end;procedure PaiLie(num:integer); vari:integer; beginif num = 0 thenbeginwritestr();exit;end;for i:=0 to n-1 dobeginif not IsIn(i) thenbeginexceptin -num:=i;testn-num:=arri;PaiLie(num-1);en

8、d;end;exceptin-num:=-1; end;procedure ReadArray(); vari:integer; beginfor i:=0 to n-1 doread(arri); end;beginassign(input,MAXMIN.IN);assign(output,MAXMIN.OUT);reset(input);rewrite(output);read(n);max:=0;min:=10000;ReadArray();InitExcept();PaiLie (n);writeln(max=,max);writeln(min=,min);write(k=,max-m

9、in);close(input);close(output);end.260、输入一个英文句子,例如:“This is a Book.“,可以看到句子是以“.”来作为结 束符号的,并且单词之间以一个空格来分隔。接着再输入一个单词 A,请找出首次在句子 中出现的与 A$相同的单词,是句子中的第几个单词,若 不存在,则输出该句子中单词字符的总个数。例如对上句子而言,若输入单词“is” ,则应输出: 2若输入单词“isa” ,则应输出:11varn,ls,la,i:integer;a,s,sf:string;beginreadln(s);readln(a);s:=copy(s,1,length(s)

10、-1);n:=1;la:=length(a);ls:=length(s);sf:=s;while pos( ,sf) thenbegini:=1;while pos( ,sf)0 dobegindelete(s,pos( ,s),1);end;i:=length(s)end;write(i); end.263、给出二个任意的正整数 N,K(1 0 dobegini:=i+1;temp:=temp-mexp(2,i);if temp=0 thenbeginwrite(ERROR!);halt;end;end;i:=0;s:=0;while nflag thenbegind:=1;m:=m+1;i

11、f m=13 thenbeginm:=1;y:=y+1;end;end; end;beginassign(input,BIRTHDAY.DAT);assign (output,BIRTHDAY.OUT);reset(input);rewrite(output);read(y);read(m);read(d);for i:=1 to 10000 dobeginincdate();end;write(y,-,m,-,d);close(input);close(output); end.265、 分解因式 ( Factor ) 问题描述: 一个自然数 N 的正因子个数记为 F(N),例如 18 的所

12、有正因子为 1、2、3、6、9、18,所以 F(18)=6。现在给出 K,求所有满足 F(N)=K 的 N 中最小的数。输入格式: 从文件读入数据,第一行为 K,其中 00 dobegini:=i+1;n:=n-9*mexp(i);end;n:=n+9*mexp (i);if n mod (i+1)=0 thenr:=i+1elser:=n mod (i+1);x:=(n-r) div (i+1);s:=mstr(x+mexp(i);s:=copy(s,r,1);writeln(s); end;beginassign(input,c:input.txt);assign(output,c:out

13、put.txt);reset(input);rewrite(output);while not eof dobeginreadln(m);writeret(m);end;close(input);close(output); end.270 、NCL 是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的 一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任 务交给了一个刚进入的新手 ZL 先生。为了很好的完成这个任务,ZL 先生首先研究了一些 一元一次方程的实例:43x86a5122a512y0 ZL 先生被主管告之,在计算器上键入的一个一元一次方

14、程中,只包含整数、小写字母及 、这三个数学符号(当然,符号“”既可作减号,也可作负号) 。方程中并没有 括号,也没有除号,方程中的字母表示未知数。问题求解 编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位)输出至屏幕。你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的 一元一次方程均为合法的,且有唯一实数解。样 例 输入:6a5122a输出:a0.750275、问题描述: 给出 n 个整数 x1,x2,x3,x4.xn,将这 n 个数从小 到大排序为:A1,A2,A3,A4.AN,记数列 A1,A2,A3,A4.AN 的奇数项之和为 P,偶数项之和

15、为 Q,令 T=|P-Q| 求出 T 的值。 输入格式: 输入文件的第一行为整数 N(1xl+1 thenbegint:=xl;xl:=xl+1;xl+1:=t;end;end;end; end;procedure add(); beginp:=0;q:=0;for i:=1 to n dobeginif i mod 2=0 thenq:=q+xielsep:=p+xi;end; end;beginassign(input,c:input.txt);assign(output,c:output.txt);reset(input);rewrite(output);readln(n);for i:=1 to n dobeginreadln(xi);end;pailie();add();if qp thenwrite(q-p)elsewrite(p-q);close(input);close(output); End.276、破碎的项链 问题描述:你有一条由 N 个红色的,白色的,或蓝色的珠子组成的项链(3c) and (stic) and (stjw) thenbeginbreak;end;end;cut:=i+n-j

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号