ImageVerifierCode 换一换
格式:DOCX , 页数:81 ,大小:49.50KB ,
资源ID:10792873      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10792873.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高中信息学竞赛各种问题求解试题及答案.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

高中信息学竞赛各种问题求解试题及答案.docx

1、高中信息学竞赛各种问题求解试题及答案高中信息学竞赛各种问题求解试题及答案 第1题(5分),将n个不同颜色的球放人k个无标号的盒子中( n=k,且盒子不允许为空)的方案数为S(n,k),例如:n=4,k=3时,S(n,k)=6。当n=6,k=3时,S(n,k)=_。答案: 0 k = k = 2 第2题(5分),有5本不同的数学书分给5个男同学,有4本不同的英语书分给4个女同学,将全部书收回来后再从新发给他们,与原方案都不相同的方案有_种。答案: 5!*4!+D(5)*D(4)=1140480其中:D(n)=(n-1)*(D(n-1)+D(n-2) (n 2) D(1)=0 D(2)=1 第3题

2、(6分),把三角形各边分成n等分,过每一分点分别做各边的平行线,得到一些由三角形的边和这些平行线所组成的平行四边形。n为已知整数,能组成_个平行四边形。答案:3*C(n+2,4) 第4题(6分),由a,b,c3个不同的数字组成一个N位数,要求不出现两个a相邻,也不出现两个b相邻,这样的N位数的个数为AN,用AN-1和AN-2表示AN的关系式为:AN_。答案:AN= 2*AN-1+AN-2 第5题(6分),在m*n的棋盘上,每个方格(单位正方形,即边长为1的正方形)的顶点称为格点。以格点为顶点的多边形称为格点多边形。若设格点凸N边形面积的最小值为gn,格点凸N边形内部(非顶点的)格点的个数的最小

3、值为fn,则gn和fn的关系式为:gn=_。答案:Gn= fn+N/2-1 ( N = 3 ) 第6题(4分),编号为1到13的纸牌顺时针排成一圈,有人从编号为1的牌从数字1开始顺时针数下去,1、2、3、20、21、,一圈又一圈。问:当数到数字N时,所在纸牌的编号为多少?答案:1+(N-1) mod 13 第7题(8分),有位小同学喜欢在方阵中填数字,规则是按下图示例从右上角开始,按斜线填数字,碰到边界就重新。显然,数字1在坐标(1,5)位置,数字25在坐标(5,1)位置。后来这位小朋友想知道,对于N阶的方阵,随机取一个位置(x,y),并规定xy,问这个位置上应该填的数字是多少?5阶方阵的示例

4、图如下: 11 7 4 2 1 16 12 8 5 3 20 17 13 9 6 23 21 18 14 10 25 24 22 19 15答案:(N-y+x)*(N-y+x-1)/2+x 第8题(5分),设有质量为1、3、9、27、81、3ng.的砝码各一枚,如果砝码允许放在天平的两边,则用它们来称物体的质量,最多可称出1g到3n+3n/2g之间的所有质量,如n=4时,可称出18到121g之间的所有质量;当物体质量为M=14时,有14+9+3+1=27,即天平一端放M=14g的物体和9g、3g、1g的砝码,另一端放27g的砝码,即可称出M的质量。当M=518g时,请你写出称出该物体的质量的方

5、法,并用上述所示的等式来表示。答案:518+243+3+1= 729+27+9 第9题(7分),在圆周上有N个点(N=6),在任意两个点之间连一条弦,假设任何3条弦在圆的内部都没有公共点,问这些弦彼此相交能在圆内构成多少个三角形(只要求写出三角形总数的表示式而无需化简)? 提示:下图是N=6的情况,图中所示的4个三角形从某种意义上说具有一定的代表性。答案:C(N,3)+4*C(N,4)+5*C(N,5)+6*C(N,6) 第10题(6分),用1个或多个互不相同的正整数之和表示1511之间的所有整数 至少要多少个不同的正整数_; 这些正整数是_答案:91,2,4,6,16,32,64,128,2

6、56 第11题(7分),在有m行n列格子的棋盘内,一枚棋子从棋盘的左上角格子沿上、下、左、右方向行走,最后走到棋盘的右下角格子。该棋子走过的格子数为奇数的充分必要条件是_答案: m+n为偶数完善程序试题及其答案第1题(14分)以下程序是将一组整数按从小到大的顺序排列。排序的方法是将长度为n的数a分为两个长度分别为(n div 2)与(n-n div 2)的子数组a1,a2。然后递归调用排序过程,将a1,a2分别排序,最后将a1,a2归并成数组a。例如a=(3,1,2,4),那么a1=(3,1),a2=(2,4)。调用排序过程将a1,a2排序,得到a1=(1,3),a2=(2,4),然后进行合并

7、排序。从键盘输入数的长度n以及n个整数,存在数组a中,调用子过程sort进行排序,最后输出排序结果。program wsh;const maxn=100;type arr:array1.maxn of integer;var a:array1.maxn of integer; n,i:integer;procedure sort(n:integer; var a:arr); var i, p1, p2, n1, n2: integer; a1,a2 :arr; begin if n = 1 then exit; fillchar(a1,sizeof(a1) ,0); fillchar(a2,s

8、izeof(a2) ,0); n1:=0; n2:=0; n1:=n div 2; n2:=(_(1)_); for i:= 1 to n1 do a1i:=ai; for i:= 1 to n2 do a2i:=_(2)_; _(3)_; sort(n2, a2); p1:=1; p2:=1; n:=0; while (p1 = n1) and (_(4)_) do begin n:=n+1; if _(5)_ then begin an:=a1p1 ;inc(p1); end else begin _(6)_; inc(p2) ;end; end; if p1 = n1 then for

9、i:= _(7)_ to n1 do begin n:=n+1;an:=a1i end else for i:=p2 to n2 do begin n:=n+1; an:=a2i; end; end;begin write(n = ); readln (n); for i:= 1 to n do read(ai); readln; sort(n,a); for i:=1 to n do write(ai,); writeln;end.答案:n-n1an1+isort(n1,a1)(p2 =n2)a1p1 a2p2an:=a2p2p1第2题(8分)有n(1n100)个同学种m(1nm100)种小

10、树苗,例如:4个同学(1、2、3、4)每小时种4种树苗(A、B、C、D)的数量估算如下表所示,编程输出每人种1种苗所用的总时间最少的安排方案和所花费的时间。 学 生 A B C D 1 5 2 4 5 2 4 3 5 3 3 5 2 4 2 4 3 2 3 3program wsh;const maxn=100; maxm = 100;var a: array1.maxn, 1.maxm of integer; m, n: integer; i, j, t: integer;procedure work(k,t1: integer); var i: integer; begin if _(1)

11、_ then begin if t1 n1mt1+tk,i第3题(10分)程序的任务是用09中的数字填入如下乘法运算的*处,数字可重复使用,且所用的数字至少有一个是素数,要求输出满足下列算式的方案数。 * * *x * *- * * * * *-* * * program wsh;const p:set of 0.9 = 2,3,5,7;var s:set of 0.9; n: integer; ans: longint; f: text;procedure init; var i: integer; t:byte; begin readln(n); s:=; for i:=1 to n do

12、 begin read(t); s:=s+t; end; close(f); end;function ok(x,l:integer):boolean; 此函数判断x是否符合条件 var t: byte; begin ok:=false; if _(1)_ l then exit; while x0 do begin t:=x mod 10; if not ( t in s) then exit; x:=x div 10; end; ok:=true; end;function inset(x:integer):boolean; 此函数判断x中是否包含素数字 var t: byte; begi

13、n inset:= false; while _(2)_ do begin t:=x mod 10; if t in p then begin inset:= true; exit; end; _(3)_; end; end;procedure work; var i,i1,i2,i3,j1,j2:integer; begin ans:=0; for i1:=1 to 9 do if i1 in s then for i2:=1 to 9 do if i2 in s then for i3:=1 to 9 do if i3 in s then begin _(4)_; for j1:=1 to

14、 9 do if (j1 in s) and ok(j1*i,3) then for j2:=1 to 9 do if (j2 in s) and ok(j2*i,3) and _(5)_ then begin if (i1 in p) or (i2 in p) or (i3 in p) or (j1 in p) or (j2 in p) or inset(j1*i) or inset(j2*i) then inc(ans); end; end; writeln(ans); end;begin init; work;end.答案:trunc(ln(x)/ln(10)+1x0x:=x div 1

15、0i:=i1*100+i2*10+i3ok(j1*i*10+j2*i,4)第4题(15分)下列程序是对冒泡排序的一种改进,数组elem中有n个元素elem1、elem2、elemn。要排序的关键字是key。先从一端开始扫描,进行比较、交换,然后改变下一趟的扫描方向进行同样的处理。请完善下面的过程。program wsh;type Td = record key: integer; inf: real; end;var elem:array1.1000 of Td; n, i: integer;procedure shakesort(n: integer); var i, t, h: integ

16、er; c: boolean; temp: Td; begin h:=1; t:=n; repeat _(1)_; for i:=h to t-1 do if elemi.key elemi+1.key then begin temp:=elemi; elemi:=elemi+1; elemi+1:=temp; _(2)_; end; _(3)_; for i:=t-1 downto h do if elemi.key elemi+1.key then begin temp:=elemi; elemi:=elemi+1; elemi+1:=temp; _(4)_; end ; _(5)_; u

17、ntil c ; end;begin主过程 略end答案:c:=truec:=falset:=t-1c:=falseh:=h+1第5题(15分)读入一个10x10的数字矩阵,矩阵中的数字各不相同,输出这个矩阵经过旋转、翻转后的7种不同样式。program wsh;var matrix: array 0.7,1.10,1.10 of integer; lr, lc, which: integer;procedure overturn( which: integer); var lr, lc: integer; begin for lr:= 1 to 10 do for lc:= 1 to 10

18、do matrixwhich,lr,lc:=matrixwhich-1,_(1)_,_(2)_; end;procedure rotate( which: integer); var lr, lc: integer; begin for lr:=1 to 10 do for lc:=1 to 10 do matrixwhich,lr,lc:=matrixwhich-1,_(3)_,_(4)_; end;begin for lr:= 1 to 10 do for lc:=1 to 10 do read(matrix0,lr,lc); readln; for which:= 1 to 7 do b

19、egin if _(5)_ then overturn(which) else rotate(which); for lr:=1 to 10 do begin for lc:= 1 to 10 do write(matrixwhich,lr,lc:3); writeln; end; readln; end;end.答案:11-lrlc11-lclrwhich=4第6题(16分)问题描述在n个元素的集合S中,找最大和最小元素(设n的值为2m)解题思路把集合S分成两个子集S1和S2,每个子集有n/2个元素应用递归过程search(S,Y,MAX,MIN)(S中有2k个元素),过程返回一对(MAX,

20、MIN)值,为最大和最小元素,最后,把S1和S2中的最大和最小元素进行比较,从而得到S中的最大和最小元素程序program wsh;type data = array1.256 of byte; jh = set of byte;var s,ss:jh; a:data; i ,j, d,largest, smallest: byte;function sq(k: byte): byte; begin if k =1 then sq:=2 else sq:=2*sq(k-1); end;procedure seareh(x:jh; y:byte; var max,rain:byte); var

21、k,p,w,nxl,nx2,ni1,ni2,n: byte; m:array1.2 of byte; s1 ,s2:jh; begin if y = 2 then begin p:=0; for k:=1 to i do if _(1)_ then begin p:=p+1;mp:=_(2)_; end; if _(3)_ then begin w:=m1;m1:=m2;m2:=w; end; max:= m1 ;min:= m2 ;exit; end else begin si:=;n:=O;y:=_(4)_; for k:=1 to i do if _(5)_ then begin n:=

22、n+1;if n nx2 then max:=nx1 else max:=nx2; if ni1 ni2 then min:=ni1 else min:=ni2; end end;begin i:=0;s:=;ss:=; for j:=1 to 7 do ss:=ss+sq(j); writeln(enter 2n data:); repeat while not eoln do begin i:=i + 1; read(d); if _(8)_ then i:= i - 1 else begin ai:=d;s:=s+ai; end; end; readln; until i in ss;

23、search(s,i,largest,smallest); writeln(largest-data:,largest,smallest-data:,smallest)end答案:ak in xmp:=akm1 =m2y:=trunc(y/2)ak in xs1:=s1+aks2:=x-s1d in s第7题(14分)问题描述将一个含有运算符为:(、)、+、-、*、/、(乘幂运算)、(求负运算)的中缀表达式,如:(1+2)*5)2-(3+5)/2转化为后缀表达式,如:12+5*235+2/-解题思路将中缀表达式转化为后缀表达式,首先规定运算符的优先数如下:运算符 ( ) +, * ,/ 优先数

24、 0 1 2 3 4 5 1若输入是运算量,则将该运算量输出;2若是左括号“(”,则将该符号的优先数压入设置的运算符堆栈ep中去;3输入运算符优先数是2,3,4,5时,如果栈空,则将运算符的优先数进栈。如果栈不空,则将它与栈顶元素进行比较,倘若优先数大于栈顶元素的优先数,则进栈;小于顶元的,则顶元退栈并输出该运算符,然后再继续比较,直到大于顶元或栈空时进栈;4若是右括号“)”,同时栈顶元又为左括号“(”,则栈顶元退栈,并抹去右括号“)”否则转3处理;5输入完而栈非空,则将栈内内容逐一退栈并输出。所有输出的结果就为后缀表达式。过程中用到的相关数据结构如下:type arraydata = arr

25、ay1.100 of string20;const fh:array1.8 of string1 =(,),+,-,*,/,); b:array1.8 of byte =(0,1,2,2,3,3,4,5);var d: arraydata; 存储运算量及运算符号 i,j,m,k: byte;过程程序procedure hzbds(var d: arraydata; var m: byte ); var: array 1-. 100 of byte; i,p,k ,bi:byte; bl: boolean; begin p:=O;k:=1;bj:=0; while k=m do begin if

26、 _(1)_ then begin p:=p+1;ep:=1 end else begin for i:=2 to 8 do if _(2)_ then begin b1:= true; repeat if _(3)_ then begin p:= p+1 ;ep:=i;bj:= 1 ;b1:= false end else if _(4)_ then if ep 1 then begin p:=p+1;ep:=i;bj:=1;b1:=false end else if dk ) then begin p:=p+1;ep:=i;bj:=1;b1:=false end else begin _(5)_;bj:= 1 ;b1:= false; end else begin write(fhep , ) ;p:=p-1 end; until b1 = false; end if _(6)_ then write(dk , ) else bj:=0

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

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