第八届绍兴市少儿信息学竞赛复赛试题(2010年11月27日下午1:30-4:00)一、题目概览二、提交源程序文件名三、比赛目录结构示例选手比赛时,需在本机为每题建立对应的题目目录,目录名称与题目英文名称相同。
选手根据题目要求,将自己提交的源程序,放在该题的题目目录下。
每位选手把自己提交的源程序连同要求的目录结构,存入D盘根目录中。
(只递交源程序,测试时以源程序为准)例如:假设试卷中有cashier、dune、manhattan三题,选手sx1001使用Pascal答题,其最终提交的文件为cashier.pas、dune.pas、manhattan.pas,则该选手提交的目录结构如下所示:|---sx1001/|---cashier/|---cashier.pas|---dune/|---dune.pas|---manhattan/|---manhattan.pas四、特别提醒比赛开始前应先检查本机能否正常使用,如有问题可向监考老师提出。
比赛结束后应及时离开机房,但注意不要关机。
1.采花生(chs.pas)在参加“采花生”这个项目比赛时,考官会出示一块n行、m列的花生田,上面一共种了n*m株花生苗。
每株花生植株下都结了一定数量的花生果,比赛开始时选手站在第1行,第1列的位置,现要求用最短的时间找到结花生果最多的一株花生植株(数据保证花生果最多的植株只有一株),然后按先向南(下)走,再向东(右)的路线顺序去采摘它的花生果,沿路经过的其他花生植株下面的花生果也要一并采摘下来,但不允许采摘没有路过的花生植株,否则依犯规出局处理。
问这个选手一共可以采摘到多少粒花生果?如一块n=5,m=6的花生田第1列第2列第3列第4列第5列第6列第1行 5 7 4 5 1 13第2行 9 6 3 2 8 7第3行 10 14 0 1 9 4第4行 4 6 9 18 25 0第5行 3 1 2 9 0 2可以发现结花生果最多的那株花生植株在(4,5),则选手采摘的顺序应为(1,1)-(2,1)-(3,1)-(4,1)-(4,2)-(4,3)-(4,4)-(4,5),一共采得的花生果粒数为5+9+10+4+6+9+18+25=86。
输入文件:输入文件chs.in,第1行有两个整数n和m( 1 < n,m <= 100 ),表示花生田一共有n行m列。
第2至n+1行,每行有m个用空格隔开的整数,第i + 1行的第j个整数P ij (0 <= P ij <= 700)表示花生田里植株(i, j)下花生的数目,0表示该植株下没有花生。
输出文件:输出文件chs.out,只有一行,一个整数,表示选手一共摘到的花生果数目。
输入样例:5 65 7 4 5 1 139 6 3 2 8 710 14 0 1 9 44 6 9 18 25 03 1 2 9 0 2输出样例:862.奶牛塔(nnt.pas)John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。
现在,只有书架的顶上还留有一点空间。
所有n(1<=n<=2000)头奶牛都有一个确定的身高Hi(1<=Hi<=1000)。
设所有奶牛身高的和为s。
书架的高度为b,并且一定保证1<=b<=s<2000000。
为了够到比最高的那头奶牛还要高的书架顶,奶牛们不得不象演杂技一般,一头站在另一头的背上,叠成一座“奶牛塔”。
当然,这个塔的高度,就是塔中所有奶牛的身高之和。
为了往书架顶上放东西,所有奶牛的身高和必须不小于书架的高度。
显然,塔中的奶牛数目越多,整座塔就越不稳定,于是奶牛们希望在能够到书架顶的前提下,让塔中奶牛的数目尽量少。
现在,奶牛们找到了你,希望你帮她们计算这个最小的数目。
输入文件:输入文件nnt.in,第1行是二个用空格隔开的整数n和b;第2至n+1行中,每行是1个整数Hi,表示每头奶牛的身高。
输出文件:输出文件nnt.out,只有1行,1个整数,表示最少要多少头奶牛叠成塔,才能够到书架顶部。
输入样例:6 4061811131911输出样例:33.贝茜式乘法(cheng.pas)问题描述:做厌了乘法计算题的贝茜,自创了一种新的乘法运算法则。
在这套法则里,A*B等于一个取自A、一个取自B的所有数字对的乘积的和。
比方说,123*45等于1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54。
对于2个给定的数A、B(1<=A,B<=长整型最大数),你的任务是,用新的乘法法则计算A*B的值。
输入文件:输入文件cheng.in,只有一行,是2个用空格隔开的整数A、B.输出文件:输出文件cheng.out,只有1行,1个整数,即新的乘法法则下A*B的值.输入样例:123 45输出样例:544.数字蜂房(bee.pas)问题描述:一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房M开始爬到蜂房N(M<N),共有多少种不同的爬行路线?输入文件:输入文件bee.in,只有一行,是2个用空格隔开的整数M,N(1<=M,N<=50)。
输出文件:输出文件bee.out,只有1行,1个整数,即有多少种爬行路线。
输入样例:1 14输出样例:377chs.pas:varn,m,i,j,max,x,y,s:longint;a:array[0..100,0..100] of longint;beginassign(input,'chs.in');reset(input);assign(output,'chs.out');rewrite(output);readln(n,m);max:=0;for i:= 1 to n dofor j:= 1 to m dobeginread(a[i,j]);if a[i,j]>max thenbeginmax:=a[i,j];x:=i;y:=j;end;end;s:=0;for i:= 1 to x dos:=s+a[i,1];for i:= 2 to y dos:=s+a[x,i];writeln(s);close(input);close(output);end.nnt.pas:varn,b,i,x,s:longint;h:array[1..20000]of longint;procedure kp(low,high:longint);var i,j,x:longint;beginif low<high thenbegini:=low;j:=high;x:=h[i];repeatwhile (i<j)and(x>=h[j]) do j:=j-1;if i<j thenbeginh[i]:=h[j];i:=i+1;end;while (i<j)and(x<=h[i]) do i:=i+1;if i<j thenbeginh[j]:=h[i];j:=j-1;end;until i=j;h[i]:=x;kp(low,i-1);kp(i+1,high);end;end;beginassign(input,'nnt.in');reset(input);assign(output,'nnt.out');rewrite(output);readln(n,b);s:=0;for i:=1 to n dobeginreadln(h[i]);s:=s+h[i];end;if s<b thenbeginwriteln(0);exit;end;kp(1,n);x:=0;s:=0;while s<b dobeginx:=x+1;s:=s+h[x];end;writeln(x);close(input);close(output);end.cheng.pas:varx,y,a,b,i,len1,len2:longint; beginassign(input,'cheng.in');assign(output,'cheng.out'); reset(input);rewrite(output);readln(x,y);a:=0;b:=0;while x>0 dobegina:=a+x mod 10;x:=x div 10;end;while y>0 dobeginb:=b+y mod 10;y:=y div 10;end;writeln(a*b);close(input);close(output);end.bee.pas:varm,n,i,j,x:longint;a:array[1..100] of real; beginassign(input,'bee.in');assign(output,'bee.out');reset(input);rewrite(output);readln(m,n);a[m+1]:=1; a[m+2]:=2;for i:= m+3 to n doa[i]:=a[i-2]+a[i-1];write(a[n]:0:0);close(input);close(output);end.。