第十二届全国青少年信息学江西赛区复赛试题.docx

上传人:b****9 文档编号:25682722 上传时间:2023-06-11 格式:DOCX 页数:15 大小:25.53KB
下载 相关 举报
第十二届全国青少年信息学江西赛区复赛试题.docx_第1页
第1页 / 共15页
第十二届全国青少年信息学江西赛区复赛试题.docx_第2页
第2页 / 共15页
第十二届全国青少年信息学江西赛区复赛试题.docx_第3页
第3页 / 共15页
第十二届全国青少年信息学江西赛区复赛试题.docx_第4页
第4页 / 共15页
第十二届全国青少年信息学江西赛区复赛试题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第十二届全国青少年信息学江西赛区复赛试题.docx

《第十二届全国青少年信息学江西赛区复赛试题.docx》由会员分享,可在线阅读,更多相关《第十二届全国青少年信息学江西赛区复赛试题.docx(15页珍藏版)》请在冰豆网上搜索。

第十二届全国青少年信息学江西赛区复赛试题.docx

第十二届全国青少年信息学江西赛区复赛试题

第十二届全国青少年信息学(计算机)奥林匹克分区联赛

(江西赛区)初级组复赛试题

说明:

复赛共3道题,总分100分。

程序输出时用到的汉字提示可以用拼音来代替

第一题(30分)在一个超市的收银处有10位顾客在排队等着付款,他们的编号依次为1,2,…,10。

由于每个顾客所购的商品不同,因此付款时所需的等待时间也就不一样。

假设这10个每个人单独付款所需的时间依次为

7

4

6

12

8

20

5

13

2

16

请编程找出这10个人排队的一种顺序,使得10个人的平均等待时间最少。

说明:

平均等待时间是把每个人的等待时间相加最后再除以n得到。

假设这n个人是按照编号1至n的自然顺序排列的,则此时的平均等待时间为:

平均等待时间=

输出格式要求:

程序的输出共分两行,其中第一行是编程求到的一种排列顺序,即1到n的一种排列;第二行是这种排列方案下的最少平均等待时间,要求输出的结果精确到小数点后两位。

第二题(30分)利用循环结构编程打印如下的图案。

      A

      ABC

    ABCDE

  ABCDEFG

  ABCDEFGHI

  ABCDEFG

    ABCDE

      ABC

      A

第三题(40分)用高精度计算S=1!

+2!

+3!

+…+n!

的准确值,其中n〈50。

说明:

上面求和公式当中的“!

”表示阶乘,它表示连乘,例如:

10!

=10*9*8*7*6*5*4*3*2*1

编程要求:

从键盘上输入一个小于50的正整数n,要求能够输出结果S的准确值。

例如:

输入:

6

输出:

S=873

收藏分享评分

 

第十四届全国青少年信息学(计算机)奥林匹克联赛(江西赛区)初级组复赛试题

2009-6-1713:

52

提问者:

曾敏天才|悬赏分:

50|浏览次数:

910次

2009-6-2019:

56

最佳答案

1.ISBN号码

描述Description

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。

ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。

例如ISBN号码0-670-82162-4中的识别码4是这样得到的:

对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然后取158mod11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

输入格式InputFormat

输入文件isbn.in只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

输出格式OutputFormat

输出文件isbn.out共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。

样例输入SampleInput

【样例1】

0-670-82162-4

【样例2】

0-670-82162-0

样例输出SampleOutput

【样例1】

Right

【样例2】

0-670-82162-4

2.传球游戏

描述Description

上体育课的时候,小蛮的老师经常带着同学们一起做游戏。

这次,老师带着同学们一起做传球游戏。

游戏规则是这样的:

n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。

聪明的小蛮提出了一个有趣的问题:

有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里。

两种传球方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。

比如有三个同学1号、2号、3号,并假设小蛮为1号,球传了三次回到小蛮手里的方式有1->2->3->1和1->3->2->1,共2种。

输入格式InputFormat

输入共一行,有两个用空格隔开的整数n,m(3<=n<=30,1<=m<=30)。

输出格式OutputFormat

输出共一行,有一个整数,标示符合题意的方法数。

样例输入SampleInput

33

样例输出SampleOutput

2

3.立体图描述Description

小渊是个聪明的孩子,他经常会给周围的小朋友们讲些自己认为有趣的内容。

最近,他准备给小朋友讲解立体图,请你帮他画出立体图。

小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每个格子上堆了一些同样大小的积木(积木的长宽高都是1),小渊想请你打印出这些格子的立体图。

我们定义每个积木为如下格式,并且不会做任何翻转旋转,只会严格以这样的一种形式摆放:

+---+

//|

+---+|

||+

||/

+---+

每个顶点用1个加号‘+’表示,长用3个‘-’表示,宽用1个‘/’表示,高用两个‘|’表示。

字符‘+’,‘-’,‘/’,‘|’的ASCII码分别为43,45,47,124。

字符‘.’(ASCII码46)需要作为背景输出,即立体图里的空白部分需要用‘.’来代替。

立体图的画法如下面的规则:

若两块积木左右相邻,图示为:

..+---+---+

.///|

+---+---+|

|||+

|||/.

+---+---+..

若两块积木上下相邻,图示为:

..+---+

.//|

+---+|

||+

||/|

+---+|

||+

||/.

+---+..

若两块积木前后相邻,图示为:

....+---+

...//|

..+---+|

.//|+

+---+|/.

||+..

||/...

+---+....

立体图中,定义位于第(m,1)的格子(即第m行第1列的格子)上面自底向上的第一块积木(即最下面的一块积木)的左下角顶点为整张图最左下角的点。

输入格式InputFormat

输入文件drawing.in第一行有用空格隔开的2个整数m和n,表示有m*n个格子(1<=m,n<=50)。

接下来的m行,是一个m*n的矩阵,每行有n个用空格隔开的整数,其中第i行第j列上的整数表示第i行第j列的格子上摞有多少个积木(1<=每个格子上的积木数<=100)。

输出格式OutputFormat

输出文件drawing.out中包含题目要求的立体图,是一个K行L列的字符矩阵,其中K和L表示最少需要K行L列才能按规定输出立体图。

样例输入SampleInput

34

2212

2211

3212

样例输出SampleOutput

......+---+---+...+---+

..+---+//|..//|

.//|-+---+|.+---+|

+---+|//|+-||+

||+---+|/+---+|/|

||//|+//|-+|

+---+---+|/+---+|/|+

|||+-||+|/.

|||/||-|+..

+---+---+---+---+|/...

|||||+....

|||||/.....

+---+---+---+---+......

4.排座椅

描述Description

【问题描述】

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。

不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。

同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。

于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:

她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

请你帮忙给小雪编写一个程序,给出最好的通道划分方案。

在该方案下,上课时交头接耳的学生对数最少。

输入格式InputFormat

【输入】

输入文件seat.in的第一行,有5各用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K

接下来D行,每行有4个用空格隔开的整数,第i行的4个整数Xi,Yi,Pi,Qi,表示坐在位置(Xi,Yi)与(Pi,Qi)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

输入数据保证最优方案的唯一性。

输出格式OutputFormat

【输出】

输出文件seat.out共两行。

第一行包含K个整数,a1a2……aK,表示第a1行和a1+1行之间、第a2行和第a2+1行之间、…、第aK行和第aK+1行之间要开辟通道,其中ai

第二行包含L个整数,b1b2……bk,表示第b1列和b1+1列之间、第b2列和第b2+1列之间、…、第bL列和第bL+1列之间要开辟通道,其中bi

样例输入SampleInput

【输入样例】

45123

4243

2333

2524

样例输出SampleOutput

2

24

附标程:

1.ISBN号码

programasd;

vars,s1:

string;

i,j,k,q,b,x,n,z,u:

longint;

begin

readln(s);s1:

=s;q:

=length(s1);

delete(s1,q,1);

whilepos('-',s)<>0do

delete(s,pos('-',s),1);

k:

=length(s);

fori:

=1tok-1do

begin

val(s[i],j);

x:

=x+j*i;

end;

val(s[k],z,u);

x:

=xmod11;

ifu=0then

ifz=xthen

writeln('Right')

else

casexof

1..9:

writeln(s1,x);

10:

writeln(s1,'X');

end;

ifu<>0then

ifx=10thenwriteln('Right')

elsewriteln(s1,x);

end.

2.传球游戏

programp1485;

varxx:

array[0..1000,0..1000]oflongint;

i,j,k,l,n,m:

longint;

begin

readln(n,m);

fori:

=1tomdo

forj:

=1tondo

xx[i,j]:

=0;

xx[0,1]:

=1;xx[1,n]:

=1;xx[1,2]:

=1;

fori:

=1tomdo

begin

xx[i,1]:

=xx[i-1,n]+xx[i-1,2];

forj:

=2ton-1do

xx[i,j]:

=xx[i-1,j-1]+xx[i-1,j+1];

xx[i,n]:

=xx[i-1,1]+xx[i-1,n-1];

end;

writeln(xx[m,1]);

end.

3.立体图

programo1;

varminh,minl,max,k,n,m,i,j,h,l,maxh,maxl:

integer;

a:

array[1..50,1..50]ofinteger;

p:

array[-304..304,-304..304]ofchar;

begin

readln(n,m);

fillchar(p,sizeof(p),'.');

fori:

=1tondo

forj:

=1tomdo

beginread(a[i,j]);if(i=1)and(a[i,j]>max)thenmax:

=a[i,j];end;

max:

=max*3+3;

minh:

=1;minl:

=1;

fori:

=1tondo

forj:

=1tomdo

begin

h:

=max+(i-1)*2;l:

=4*j+1+(n-i)*2;

ifh>maxhthenmaxh:

=h;

ifl>maxlthenmaxl:

=l;

ifl-4

=l-4;

fork:

=1toa[i,j]do

begin

ifh-5

=h-5;

p[h,l]:

='+';

p[h,l-1]:

='-';

p[h,l-2]:

='-';

p[h,l-3]:

='-';

p[h,l-4]:

='+';

p[h-1,l]:

='|';

p[h-1,l-1]:

='';

p[h-1,l-2]:

='';

p[h-1,l-3]:

='';

p[h-1,l-4]:

='|';

p[h-2,l]:

='|';

p[h-2,l-1]:

='';

p[h-2,l-2]:

='';

p[h-2,l-3]:

='';

p[h-2,l-4]:

='|';

p[h-3,l]:

='+';

p[h-3,l-1]:

='-';

p[h-3,l-2]:

='-';

p[h-3,l-3]:

='-';

p[h-3,l-4]:

='+';

p[h-1,l+1]:

='/';

p[h-2,l+1]:

='';

p[h-2,l+2]:

='+';

p[h-3,l+1]:

='';

p[h-3,l+2]:

='|';

p[h-4,l+1]:

='/';

p[h-4,l+2]:

='|';

p[h-5,l+2]:

='+';

p[h-5,l+1]:

='-';

p[h-4,l-3]:

='/';

p[h-4,l-2]:

='';

p[h-4,l-1]:

='';

p[h-4,l]:

='';

p[h-5,l-2]:

='+';

p[h-5,l-1]:

='-';

p[h-5,l]:

='-';

h:

=h-3;

end;

end;

fori:

=minhtomaxhdo

begin

forj:

=minltomaxl+2do

write(p[i,j]);

writeln;

end;

end.

4.排座椅

programp1498;{1,数组压缩,去0(*)2,基数排序(**)}

typende=record

name:

longint;

ren:

longint;

end;

node=array[1..1000]ofnde;

vara,b,x,y,p,q:

array[1..2000]oflongint;

c,d:

node;f:

array[1..2000]ofboolean;

i,j,k,l,m,n,o,q1,q2:

longint;

proceduretry(m,q1,k:

longint;c:

node);

vari,j,l:

longint;t:

nde;

begin

fori:

=1toq1-1do

forj:

=I+1toq1do

if(c[i].ren

begin

t:

=c[i];c[i]:

=c[j];c[j]:

=t;

end;

fori:

=1tokdo{**}

f[c[i].name]:

=true;

fori:

=1tomdo

iff[i]=truethen

write(i,'');writeln;

end;

begin

readln(m,n,k,l,o);

fori:

=1toodo

begin

readln(x[i],y[i],p[i],q[i]);

ifx[i]=p[i]then

ify[i]

inc(b[q[i]]);

ify[i]=q[i]then

ifx[i]

inc(a[p[i]]);

end;

fori:

=1to1000do

begin

ifa[i]>0thenbegin{*}

inc(q1);c[q1].name:

=i;

c[q1].ren:

=a[i];

end;

ifb[i]>0thenbegin

inc(q2);d[q2].name:

=i;

d[q2].ren:

=b[i];

end;

end;

try(m,q1,k,c);

fillchar(f,sizeof(f),false);

try(n,q2,l,d);

end.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1