pascal算法题

合集下载

82111668_2012版Pascal算法高级视频教程附带例题与答案

82111668_2012版Pascal算法高级视频教程附带例题与答案

82111668_2012版Pascal高级算法视频教程附带例题与答案82111668_2012出品例:2.1.1 高精度加法program ex(input,output);typearr=array [1..256] of integer;var st1,st2,st3:string;sz1,sz2,sz3:arr;i:integer;procedure sum(st:string;varsz:arr);vari,code:integer;beginfor i:=1 to length(st) doval(st[length(st)+1-i],sz[i],code);end;functionfac:boolean;var j:integer;beginfac:=true;for j:=256 downto i+1 doif sz3[j]<>0 thenfac:=false;exit;end;end;procedure start;beginfor i:=1 to 256 dobeginsz1[i]:=0;sz2[i]:=0;sz3[i]:=0;end;end;beginstart;readln(st1);readln(st2);sum(st1,sz1);sum(st2,sz2);{字符串→数组} st3:='';for i:=1 to 255 dosz3[i+1]:=(sz3[i]+sz1[i]+sz2[i]) div 10; sz3[i]:=(sz3[i]+sz1[i]+sz2[i]) mod 10;end;{加法}for i:=1 to 256 dobeginst3:=chr(sz3[i]+48)+st3;iffac then break;end;{数组→字符串}writeln(st1,'+',st2,'=',st3);readln;end.例2.1.2.1 高精度减法_1program ex(input,output);typearr=array [1..65536] of integer; var st1,st2,st3:ansistring;sz1,sz2,sz3:arr;i:integer;procedure sum(st:string;varsz:arr); vari,code:integer;beginfor i:=1 to length(st) doval(st[length(st)+1-i],sz[i],code); end;functionfac:boolean;var j:integer;beginfac:=true;for j:=256 downto i+1 doif sz3[j]<>0 thenbeginfac:=false;exit;end;end;procedure start;beginfor i:=1 to 256 dobeginsz1[i]:=0;sz2[i]:=0;sz3[i]:=0;end;end;beginstart;readln(st1);readln(st2);sum(st1,sz1);sum(st2,sz2);{字符串→数组} st3:='';for i:=1 to 255 dobeginsz3[i]:=sz3[i]+sz1[i]-sz2[i];if sz3[i]<0 thenbeginsz3[i]:=sz3[i]+10;sz3[i+1]:=sz3[i+1]-1;end;end;{减法}for i:=1 to 256 dobeginst3:=chr(sz3[i]+48)+st3; iffac then break;end;{数组→字符串}writeln(st1,'-',st2,'=',st3);readln;end.例2.1.2.2 高精度减法_2program ex(input,output);type arr1=array [1..65536] of shortint;arr2=array [1..65536] of char;var sz1,sz2,sz3:arr1;s1,s2:arr2;n,m,i:longint;beginfor i:=1 to 65536 do begin sz1[i]:=0; sz2[i]:=0; sz3[i]:=0; end;n:=0;while not(eoln()) dobegininc(n);read(s1[n]);end;for i:=1 to n do sz1[i]:=integer(s1[n+1-i])-48;readln();m:=0;while not(eoln()) dobegininc(m);read(s2[m]);end;readln();for i:=1 to m do sz2[i]:=integer(s2[m+1-i])-48; for i:=1 to n dobeginsz3[i]:=sz3[i]+sz1[i]-sz2[i];if sz3[i]<0 thenbeginsz3[i]:=sz3[i]+10;sz3[i+1]:=-1;end;end;i:=n;while (i>0)and(sz3[i]=0) dodec(i);ifi=0 then writeln(0)elsebeginfor i:=i downto 1 do write(sz3[i]);writeln();end;readln;end.例2.3.1:插入排序programinsert_sort(input,output);vari,j,n,k:integer;a:array[1..100] of integer; beginreadln(n);for i:=1 to n do read(a[i]);readln;for i:=2 to n dobegink:=a[i];j:=i;while (j>=2)and(a[j-1]>k) dobegina[j]:=a[j-1];dec(j);end;a[j]:=k;end;for i:=1 to n do write(a[i]); writeln;readln;end.例3.3.1:先序遍历procedure first(p:point); beginif p=nil then exit;writeln(p^.data);first(p^.left);first(p^.right);end;例3.3.2:中序遍历procedure middle (p : point); beginif p=nil then exit;middle (p^ . left);writeln (p^ . data);middle (p^ . right);end;例3.3.3:后序遍历procedure last (p : point); beginif p=nil then exit;last (p^ . left);last (p^ . right);writeln (p^ . data);end;例3.3.4:树的宽度搜索program BFS(input,output); type point=^node;node = recorddata:integer;left,right:point;end;queue=objectconstmaxn=1000;data : array [1..maxn] of point;front , rear : integer;function empty():boolean;procedure add(n:point);end;functionqueue.empty():boolean;beginexit(front=rear);end;procedurequeue.add(n:point);begininc(rear);data[rear]:=n;end;varhead,p:point;q:queue;begin{输入二叉树。

PASCAL竞赛试题汇编

PASCAL竞赛试题汇编

PASCAL竞赛试题汇编1.s=1+3+5+7……..+992.s=1+2+2^3+2^5+………….+2^633.s=1-1/2+1/3-1/4+1/5…………….-1/1004.s=1*3*5*7………..*17*195.s=1+2+4+8+1024+20486.s=1*2*3+2*3*4+3*4*5+n(n+1)(n+2)7.s=1!+2!+3! (20)8.有一个整数,如果加上100恰好为某数的平方,如果加上156恰好为另一数的平方,求这个数.9.产生100个0到29之间的随机函数,利用紧凑格式打印出这组值,选出其中的素数,并把这些素数按大小排列。

10、有一个五位数,若在它后面写上一个7,得一个六位数A,若在它前面写上一个7,得一个六位数B,B是A的五倍,编一程序,计算出这个五位数是多少?11、从键盘上输入10个自然数,从中分别计算出十位数是1、2、3、4、5……..9的自然数的个数,打印出来。

12、编一程序,把9个自然1-9随意放到二维数组中,并把这个数组按列的上升顺序排序,显示出排序前、后数组。

如:排序前 5 7 3 1 4 72 1 6 2 5 88 9 4 3 6 913、求从1到100之间的3和7的倍数来,分别算出它们数值的和。

14、找出100-999之间的“水仙花”数,所谓“水仙花”数,是指一个三位数,其各位数字的立方和等于该数本身,例如:153=1^3+5^3+3^3。

15、观察下面的序号和算式,编程填出()里的数,并把这个算式打印出来。

序号算式11+2+3=623+5+7=1535+8+11=2447+11+15=3359+14+19=42( ) ( )+( )+7959=( )16、用100元钱买100只鸡,母鸡3元一只,小鸡1元3只,公鸡每只5元,问各应买多少只?17、把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法?18、编辑打出四位数,ABCD中满足下述关系的数:(ab+cd)(ab+cd)=abcd19、用1、2、3、4……9九个数(不能重复)组成下列式子:()*()-()=96/()(+()=()求出各种可能方案。

Pascal顺序结构程序设计作业(含答案)

Pascal顺序结构程序设计作业(含答案)

第1题:完善下列程序:问题:给出半径R=100,高H=30,求圆周长、圆面积、圆柱全面积。

源程序:program lx1(input,output);var(1):real;beginlen:=2*pi*r;s:=(2);qs:=len*h+2*s;writeln('len=',len,'s=',sm,'qs=',qs);end.解:我们可以看到变量pi,r,s,qs,len,h均未定义。

则(1)为pi,r,s,qs,len,h由圆面积公式可以很容易得到(2):pi*r*r注:这一题题目有错,pi,r,h变量未定义。

同学们可以自行加上,但不可以不加。

如在begin下加pi:=3.;r:=100;h:=30;第2题:编写一程序,当程序执行时,输入以秒为单位的时间,输出形式为:“小时:分:秒”解:这一题用到两个标准函数:mod和div,mod指取余,div指取整商。

用puts表输入,用hours表小时,用minutes表分钟,用seconds表秒。

程序如下:program name;var puts,hours,minutes,seconds:integer;beginread(puts);hours:=puts mod 3600;puts:=puts div 3600;minutes:=puts mod 60;seconds:=puts div 60;writeln(hours,':',minutes,':',seconds)end.同学们可以看到puts是输入变量,也是临时变量,变了两次值,仔细想想是如何变化的。

第3题:编写一程序,输入一个三位数的正整数,输出时反向输出。

如:输入456,输出654。

解:这一题如果学了数组很简单,没有的话就要用mod和div函数,请同学们在理解上一题的基础上看下面的程序。

program name;var three:integer;beginread(three);for i:=1 to 3 dobeginwrite(three mod 10);three:=three div 10;end;end.本程序用到一个for循环,指循环执行三次。

Pascal百题练习

Pascal百题练习

1、有一数字如下:65436543654365436543………循环排列,(1)输入一个数字n,输出第n个数字。

如输入3则输出为4,输入1则输出为6。

(2)输入一个数字n,在屏幕上输出如题数字,每行30个数字。

(3)输入一个数字n,输出所有数字4所在的位数。

如输入15,输出4所在的位置,即3 7 11 152、有一字符串如下:EDCBAEDCBAEDCBA……..循环排列,(1)输入一个整数n,输出第n位字符。

如输入3输出为C,输入1则输出为E。

(2)输入一个整数n,在屏幕上输出如题字母,每行30个字母。

(3)输入一个数字n,输出所有1-n范围内字母C所在的位数,场宽4。

如输入15,输出D所在的位置,即2 7 123、输入一字符,如该字符为小写字母,则转换成大写并输出;如该字符为大写字母,则转换成小写并输出,如果输入是数字则将该数字转成整数并输出该整数。

否则输出‟Error‟,即错误。

如输入a则输出为A,如输入为B则输出为b,如输入9则转成整数9并输出。

(提示:‟a‟≤小写字母≤‟z‟,‟A‟≤大写字母≤‟Z‟)4、输入三个数,判断这三个数能否作为边长组成三角形,如果能组成则输出TRUE,不能组成三角形则输出FALSE。

5、输入三个数,按从大到小的顺序输出。

如,输入15 20 16 ,输出为20 16 156、输入一个三位整数,输出一个新三位数,使其百位数最大,个位数最小。

如,输入315,输出531。

7、输入四个整数,输出四个数中的最大值和最小值。

(分两行输出)8、输入一个秒数,转换成小时、分、秒并输出。

如输入4500,输出为1:15:0。

9、有鸡兔同笼,现发现有头30个脚90只,试编程算出鸡兔各多少只并输出。

10、有五个好朋友相聚,第一个朋友带来很多糖块赠送给各位好友,使每人的糖块在原来的基础上增加了一倍,第二个朋友也向各位朋友分发糖块,使每人在已有糖块的基础上又增加了一倍,第三、第四、第五位朋友都照此办理,最终每人刚好都有32块糖,请编程算出原来每位好友各有多少糖块。

Pascal百题练习

Pascal百题练习

1、有一数字如下:65436543654365436543………循环排列,(1)输入一个数字n,输出第n个数字。

如输入3则输出为4,输入1则输出为6。

(2)输入一个数字n,在屏幕上输出如题数字,每行30个数字。

(3)输入一个数字n,输出所有数字4所在的位数。

如输入15,输出4所在的位置,即3 7 11 152、有一字符串如下:EDCBAEDCBAEDCBA……..循环排列,(1)输入一个整数n,输出第n位字符。

如输入3输出为C,输入1则输出为E。

(2)输入一个整数n,在屏幕上输出如题字母,每行30个字母。

(3)输入一个数字n,输出所有1-n范围内字母C所在的位数,场宽4。

如输入15,输出D所在的位置,即2 7 123、输入一字符,如该字符为小写字母,则转换成大写并输出;如该字符为大写字母,则转换成小写并输出,如果输入是数字则将该数字转成整数并输出该整数。

否则输出‟Error‟,即错误。

如输入a则输出为A,如输入为B则输出为b,如输入9则转成整数9并输出。

(提示:‟a‟≤小写字母≤‟z‟,‟A‟≤大写字母≤‟Z‟)4、输入三个数,判断这三个数能否作为边长组成三角形,如果能组成则输出TRUE,不能组成三角形则输出FALSE。

5、输入三个数,按从大到小的顺序输出。

如,输入15 20 16 ,输出为20 16 156、输入一个三位整数,输出一个新三位数,使其百位数最大,个位数最小。

如,输入315,输出531。

7、输入四个整数,输出四个数中的最大值和最小值。

(分两行输出)8、输入一个秒数,转换成小时、分、秒并输出。

如输入4500,输出为1:15:0。

9、有鸡兔同笼,现发现有头30个脚90只,试编程算出鸡兔各多少只并输出。

10、有五个好朋友相聚,第一个朋友带来很多糖块赠送给各位好友,使每人的糖块在原来的基础上增加了一倍,第二个朋友也向各位朋友分发糖块,使每人在已有糖块的基础上又增加了一倍,第三、第四、第五位朋友都照此办理,最终每人刚好都有32块糖,请编程算出原来每位好友各有多少糖块。

Pascal算法

Pascal算法

算法:
算法是程序的基础。

有了一个好的算法,再进行编码,把算法转换成任何一个程序设计语言所表示的程序。

算法就是解题步骤。

例题:求1——100这一百个相继整数的和S。

解法一:s=1+2+3+……+100 【需要100-1次加法】
解法二:s=(1+100)*50 【需要加法、乘法、除法各一次】不同的算法,对计算的工作量造成重大影响,还要考虑算法对精确度的影响。

程序质量的高低,主要取决于算法。

结构化程序特点:
1按功能相对独立原则划分若干模块。

2 单入口、单出口。

3 强调三种基本结构组成(顺序、选择、循环性)。

4 书写格式清晰。

5 不包含无限循环(即执行时间是有限的)
6 没有死语句(即程序中所有语句都能得到执行的机会)
设计结构化程序方法:
1 自顶向下
2 逐步细化。

3 按“功能单一”原则划分模块。

PASCAL题集

PASCAL题集1、给一个不多于三位的正整数,求出它是几位数,并分别打印出各位上的数字。

vara,b,c,d,e:integer;beginreadln(a);b:=a div 100;c:=(a div 10) mod 10;d:=a mod 10;if b<>0 then e:=3 else if c<>0 then e:=2 else e:=1;writeln(e);if (e=1) then writeln(d)else if (e=2) then writeln (c,' ',d)else writeln(b,' ',c,' ',d);end.2、编写程序求出下式中n的最大值2*2+4*4+6*6+''''''''''+n*n<1500var a,s:integer;begina:=0;s:=0;repeata:=a+2;s:=s+a*a;until s>=1500;writeln(a-2); readln;end.3、古印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋的发明者),问他要什么.达依尔回答:“殿下只要在棋盘(横竖个8行8列,共64个格)的第一个格子中放1粒麦子,在第二个格子中放2粒,在第三格中放4粒,以后每个格子中放的麦粒数都是前一个的两倍.如此放满64格,我就满足了。

”请你计算出输入格数(麦粒数或体积)后的麦粒数和体积(格数和体积或格数和麦粒数)提示:1立方米麦子约为1.42乘以10的8次方varsum,t:double;i,j:longint;begint:=0;for i:=0 to 63 dobeginsum:=1/142000000;for j:=1 to i dosum:=sum*2;t:=t+sum;end;writeln(t:10:10);end. 答案:129906648406.4054、已知一对兔子,每个月可以生一对小兔,而小兔子过一个月后也可以生一对小兔,即兔子的对数是:第一个月1对,第二月2对,第三个月3对,第四个月5对,……假设兔子的生育期是12个月,并且不死, 问一年后,这对兔子有多少对活着的后代?program t0101;constn=12;vari,l,p,x:integer;beginp:=1;l:=2;for i:=3 to n dobeginx:=l+p;p:=l;l:=x;end;writeln('total:',x);readlnend. 答案:即数列1,2,3,5,8……,结果为233。

pascal 练习题

pascal 练习题Pascal练习题Pascal是一种结构化的编程语言,于20世纪70年代由Niklaus Wirth开发。

它以其简洁、易读和高效的特点而闻名。

由于Pascal语言的特殊性质,它被广泛用于教育和训练编程入门者。

本篇文章将为大家呈现一些适用于Pascal编程的练习题。

通过这些练习题,读者们可以增加他们的Pascal编程技能,深入了解Pascal语言的特性与用法。

下面列出了一些练习题,每个练习题都有对应的题目和要求。

练习题一:阶乘计算器题目:编写一个程序,实现阶乘的计算。

要求:用户输入一个正整数,程序将输出该数的阶乘。

练习题二:质数判断器题目:编写一个程序,判断一个数是否为质数。

要求:用户输入一个整数,程序将输出该数是否为质数。

练习题三:字符串翻转题目:编写一个程序,实现字符串的翻转。

要求:用户输入一个字符串,程序将输出该字符串的翻转结果。

练习题四:数列求和题目:编写一个程序,计算数列的和。

要求:给定一个正整数n,程序将计算1到n的所有整数的和。

练习题五:矩阵转置题目:编写一个程序,实现矩阵的转置。

要求:用户输入一个m×n的矩阵,程序将输出该矩阵的转置矩阵。

练习题六:冒泡排序题目:编写一个程序,实现冒泡排序算法。

要求:用户输入一个整数数组,程序将按照升序或降序的方式对数组进行排序。

通过上述练习题,我们可以锻炼Pascal编程的各个方面,包括基本的算术运算、条件语句、循环语句、字符串处理以及数组操作等。

通过编写这些程序,读者不仅可以提高他们的编程技能,还可以更好地理解算法的实现过程。

为了更好地完成这些练习题,以下是一些有用的提示:1. 阶乘计算器:使用一个循环结构,递增一个变量并与用户输入的数相乘,直到达到用户输入的数。

2. 质数判断器:使用一个循环结构,检查除了1和自身以外的数是否可以整除用户输入的数。

3. 字符串翻转:使用一个循环结构,从字符串的末尾开始逐个提取字符,然后将提取的字符逐个连接起来形成新的字符串。

PASCAL语言典型问题及算法实例讲解(学生假期

PASCAL语言典型问题及算法实例讲解(学生假期练习)一、典型问题分析及题解1、数制转换:编程输入十进制N(N:-32767~32767),请输出它对应的二进制、•八进制、十六进制数。

例如: INPUT N(-32767~32767):222222 TURN INTO 2:11011110222 TURN INTO 8:336222 TURN INTO 16:DE[解]十进制数转化为某进制数的转换方法,如下图示:除x逆序取余法十进制数 x进制数(x=2,8,16等)例中n=222(十进制数),转换成x进制数的过程如下图示:(1)十进制数→二进制数(2)十进制数→八进制数(3)十进制数→十六进制数x=2 222 被除数(最大商) x=8 222 6 x=16 222 E (14)102 111 0 低位 8 27 3 16 13 D (13)102 50 1 逆 83 3 02 25 0 余序 02 12 0 数取2 6 0 余2 3 1 数2 1 1 高位0 (最大商为0时停止)将每次所得的余数由下至上排列(逆序取余数),即有:(222)10转换成二进制数得到:1100010(222)10转换成八进制数得到:336(222)10转换成十六进制数得到:13、14这时得到的逆序余数串(在数组B[1]、B[2]、……、B[k]中)的每位数均为十进制数。

程序中利用字符串A来计算x进制数的位数(即COPY(A,B[i]+1,1)),见下表:数组B0 (回车)竖排123 4 (回车)5678 (回车)9101112 (回车)131415字串A0 (回车) 竖排1234 (回车)5678 (回车)9ABC (回车)DEF下标i1 (回车) 竖排234 5 (回车)6789 (回车)10111213 (回车)141516由上表得:(222)10=(1100010)2=(336)8=(DE)16[程序] {$I-} Program jj;var N,k:integer;B:array[1..1000] of integer;Procedure chg10(N,x:integer); {将十进制数N转换成x进制数}Begin k:=0; {转换后的x进制数位的长度}while N<>0 do {N不为0时}begin B[k]:=N mod x; {除以x取余数}N:=N Div x; {取最大商N}k:=k+1; {x进制数位加1}end;end;{chg10}Procedure Sput(N,x:integer);{进制数输出}VAR i:integer; A:string;Begin A:='0123456789ABCDEF'; {表示x进制数的位数串}write(N:6,' Turn into ',x:2,':');for i:=k-1 downto 0 do write(copy(A,B[i]+1,1));{逆序输出x进制数}writeln;end; {Sput}begin {MAIN}write('Input N(-32767 to 32767):');readln(N);if (N<=-32767)or(N>32767) thenbegin writeln('Input error!');halt;end;chg10(N,2);Sput(N,2); {十进制数转换成2进制数,并输出}chg10(N,8);Sput(N,8); {十进制数转换成8进制数,并输出}chg10(N,16);Sput(N,16); {十进制数转换成16进制数,并输出}end.2、找数字对:输入N(2≤N≤100)个数字(在0与9之间),然后统计出这组数中相邻两数字组成的链环数字对出现的次数。

pascal语言部分几个 难题练习》》无代码》

1.“数学黑洞6174”已知:一个任意的四位正整数。

将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。

即:7641-1467=6174。

将永远出不来。

求证:所有四位数的数字(全相同的除外),均能得到6174。

输出掉进黑洞的步数。

要求:(1)当相减后第一次出现6174,就可认为掉进黑洞(2)此题无需输入文件(3)输出文件中,应列出所有四位数(相同的除外)对应的黑洞步数。

2、求数字的乘积根。

正整数的数字乘积这样规定:这个正整数中非零数字的乘积。

例如整数999的数字乘积为9*9*9,得到729;729的数字乘积为7*2*9,得到126;126的数字乘积为1*2*6,得到12;12从数字乘积为1*2,得到2。

如此反复取数字的乘积,直至得到一位数字为止。

999的数字乘积根是2。

编程输入一个长度不超过100位数字的正整数,打印出计算数字乘积根的每一步结果。

输出格式如下:(N=3486784401)348678440151609616201223.构造幻方求解幻方,是把自然数:1,2,3,.....,n*n,填入n*n的方阵里,使得方阵每行、每列、两条主对角线的和等于1/2*n(n*n+1).(n&gt;=3)n称为幻方的阶。

例如下面是一个3阶幻方:492357816我们所要编的程序,就是从键盘输入幻方的阶N,然后打印出这个N阶幻方。

需要注意的是,偶数阶幻方和奇数阶幻方的构造方法可能会有一点不同。

4、苹果树:题目描述xiaoT到了苹果树林,相当激动,他发现苹果树上的苹果一个接着一个有规律的掉了下来,每棵苹果树掉果子的时间间隔是一样的。

Input 第一行是一个正整数n,表示苹果树的个数。

接下来n行,每行四个正整数s,e,T,d,(s=0)(T>0)描述一棵苹果树。

表示第s秒,苹果树第一次掉果子(一个),接着每隔T秒就掉一次,每次掉的个数比前一次掉的多d个,最后一次果子在第e秒掉下(保证第e秒会有果子掉下)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法应用综合测试(二)
(作答时间:3小时)
说明:1、作题前先在D盘新建一个文件夹,以自已的“学校+姓名”命名
2、各程序的源文件名、输入输出文件见题目
第一题杨辉三角(yh.pas)
【问题描述】
输出杨辉三角第n行。

【输入数据】
一个整数n,表示要输出杨辉三角的第n行。

【输出数据】
一行,杨辉三角的第n行,两个数之间用空格隔开。

【数据范围】
对于30%数据,0<n<10;
对于100%数据,0<n<50.
第二题亲和数(amicable.pas)
【问题描述】
某一天,tenshi看了一本趣味数学书,上面提到了亲和数:定义数对 (x,y) 为亲和数对当且仅仅当x、y为不同正整数,且x、y各自的所有非自身正因子之和等于另一个数。

例如 (220,284) 和 (280,224) 都是亲和数对,因为:
220的所有非自身正因子之和为:1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
284的所有非自身正因子之和为:1 + 2 + 4 + 71 + 142 = 220
数对 (x,y ) 跟 (y,x) 被认为是同一数对,所以我们只考虑 x<y 的情况。

任务:tenshi对某个范围内的亲和数对的数量非常感兴趣,所以希望你能帮她编写一个程序计算给定范围内的亲和数对的数量。

给定一个范围A到B,如果A≤ x ≤ B,则我们称 (x,y)在范围[A,B]内。

【输入格式】
输入文件名:Amicable.in,从文件的第一行分别读入正整数A和B,其中A、B满足
1 ≤ A ≤ B ≤108
【输出格式】
输出文件名:Amicable.out,输出文件只有一行,就是[A,B]内亲和数对的数量
【样例输入】
200 1200
【样例输出】
2
注:[200,1200] 内的数对只有两个,分别是(220,284)和(1184 1210)
【数据规模】
对于60%的数据,2<=A、B<longint;B-A<10000;
对于100%的数据,2<=A、B< longint; B-A<100000。

第三题数的查找(seek.pas)
【问题描述】
对于给定的N个元素表,要求从中找出第K小的元素.
输入:
第一行是总数N和K,
以下若干行共N个的元素,每行最多20个元素.
输出:
第K小的数.
【输入文件】
输入文件名为:seek.in,第一行有两个数N、K(2<N、K<10000000),N为要找的数总个数,K为要找的第K小数的元素;
以下若干行为N个元素表;(每行最多30个元素)
【输出文件】
输出文件名为:seek.out,一行,为在元素表中找的到第K小素.
【样例输入1】
5 3
23 8 91 56 4
【样例输出1】
23
【样例输入2】
5 3
23 4 1 56 4
【样例输出2】
4
【数据规模】
对于40%的数据,2<=N、K<integer;
对于100%的数据,2<=N、K<longint;
第四题两只塔姆沃斯牛
【问题描述】
两只牛在森林里故意走丢了。

农民John开始用他的专家技术追捕这两头牛。

你的任务是模拟他们的行为(牛和John)。

追击在10x10的平面网格内进行。

一个格子可以是:
∙一个障碍物,
∙两头牛(它们总在一起), 或者
∙农民John.
两头牛和农民John可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。

一个格子可以是:
∙. 空地
∙* 障碍物
∙ C 两头牛
∙ F 农民John 这里有一个地图的例子::
*...*..... ......*... ...*...*.. .......... ...*.F.... *.....*... ...*...... ..C......* ...*.*.... .*.*......
牛在地图里以固定的方式游荡。

每分钟,它们可以向前移动或是转弯。

如果前方无障碍且不会离开地图,它们会按照原来的方向前进一步。

否则它们会用这一分钟顺时针转90度。

农民John, 深知牛的移动方法,他也这么移动。

每次(每分钟)农民John和两头牛的移动是同时的。

如果他们在移动的时候穿过对方,但是没有在同一格相遇,我们不认为他们相遇了。

当他们在某分钟末在某格子相遇,那么追捕结束。

开始时,John和牛都面向北方。

【输入文件】
文件名: ttwo.in,共10行,每行10个字符,如上文描述的地图。

【样例输入】
*...*.....
......*...
...*...*..
..........
...*.F....
*.....*...
...*......
..C......*
...*.*....
.*.*......
【输出文件】
文件名:ttwo.out,输出一个数字,表示John需要多少时间才能抓住牛们。

输出0,如果John无法抓住牛。

【样例输出】
49。

相关文档
最新文档