[学科竞赛]普及组复赛试题.doc_第1页
[学科竞赛]普及组复赛试题.doc_第2页
[学科竞赛]普及组复赛试题.doc_第3页
[学科竞赛]普及组复赛试题.doc_第4页
[学科竞赛]普及组复赛试题.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NOIP1995年复赛试题1. 设有下列的算式:求出中的数字,并打印出完整的算式来。 8 0 9 -) - - 1 2. 方阵填数:在一个NN的方阵中,填入1,2,NN个数,并要求构成如下的格式:N=616 17 18 19 20 115 30 31 32 21 214 29 36 33 22 313 28 35 34 23 412 27 26 25 24 511 10 9 8 7 6N=513 14 15 16 112 23 24 17 211 22 25 18 310 21 20 19 4 9 8 7 6 5例:3. 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。 例如:(13)10=(1101)2 其中1的个数为3,0的个数为1,则称此数为A类数; (10)10=(1010)2 其中1的个数为2,0的个数也为2,称此数为B类数; (24)10=(11000)2 其中1的个数为2,0的个数为3,则称此数为B类数; 程序要求:求出11000之中(包括1与1000),全部A、B两类数的个数。4.编码问题:设有一个数组A:ARRAY0.N-1 OF INTEGER;数组中存放的元素为0N-1之间的整数,且AiAj(当ij时)。 例如:N=6时,有: A=(4,3,0,5,1,2) 此时,数组A的编码定义如下: A0的编码为0; Ai的编码为:在A0,A1,Ai-1中比Ai的值小的个数(i=1,2N-1) 上面数组A的编码为:B=(0,0,0,3,1,2) 程序要求解决以下问题:给出数组A后,求出其编码;给出数组A的编码后,求出A中的原数据。5. 灯的排列问题:设在一排上有N个格子(N20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,Nk(k表示不同颜色灯的个数)。 放灯时要遵守下列规则:同一种颜色的灯不能分开;不同颜色的灯之间至少要有一个空位置。 例如:N=8(格子数) R=2(红灯数) B=3(蓝灯数) 放置的方法有: R-B顺序RRBBBRRBBBRRBBBRRBBBRRBBBRRBBB B-R顺序BBBRRBBBRRBBBRRBBBRRBBBRRBBBRR放置的总数为12种。数据输入的方式为:NP1(颜色,为一个字母) N1(灯的数量)P2 N2 Q(结束标记,Q本身不是灯的颜色) 程序要求:求出一种顺序的排列方案及排列总数。NOIP1996年复赛试题1编制一个乘法运算的程序(20分) 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出。 例如,输入格式:8913 又如,输入格式:16 8 输出格式: 89 输出格式: 16 13 8 267 128 89 11572输入三个自然数N,i,j (1=i=N,1=j=N),输出在一个N*N格的棋盘中,与格子(i,j)同行、同列、同一对角线的所有格子的位置。(20分) 如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图:第1行第2行第3行第4行 第一列第二列第三列第四列(2,3) 当n=4,i=2,j=3时,输出的结果是: (2,1) (2,2) (2,3) (2,4) 同一行上格子的位置 (1,3) (2,3) (3,3) (4,3)同列列上格子的位置 (1,2) (2,3) (3,4) 左上到右下对角线上的格子的位置 (4,1) (3,2) (2,3) (1,4) 左下到右上对角线上的格子的位置3字符串编辑(30分) 从键盘输入一个字符串(长度=40个字符),并以字符 . 结束。 例如:This is a book. 现对该字符串进行编辑,编辑功能有:D:删除一个字符,命令的方式为: D a 其中a为被删除的字符 例如:D s 表示删除字符 s ,若字符串中有多个 s,则删除第一次出现的。 如上例中删除的结果为: Thi is a book.I:插入一个字符,命令的格式为: I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 s 的前面插入字符 d ,若原串中有多个 s ,则插入在最后一个字符的前面,如上例中: 原 串:This is a book. 插入后:This ids a book.R:替换一个字符,命令格式为: R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。例如: 原 串: This is a book.输入命令:R o e 替换后的字符串为: This is a beek.在编辑过程中,若出现被改的字符不存在时,则给出提示信息。4比赛安排(30分) 设有有2 n(n=6)个球队进行单循环比赛,计划在2 n 1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2 n 1天内每个队都与不同的对手比赛。例如n=2时的比赛安排: 队 1 23 4 比赛 1=23=4 一天 1=32=4 二天 1=4 2=3 三天NOIP1997年复赛试题1 设有一个n*m方格的棋盘(1m,n100)。(30%) 求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。 例如:当n=2,m=3时正方形的个数有8个;即边长为1的正方形有6个; 边长为2的正方形有2个。长方形的个数有10个; 即2*1的长方形有4个; 1*2的长方形有3个; 3*1的长方形有2个; 3*2的长方形有1个。程序要求:输入:n和m 输出:正方形的个数与长方形的个数如上例:输入:2 3 输出:8,102将1,2,,9共9个数排成下列形态的三角形。(30%) a b c d e f g h i 其中:ai分别表示1,2,,9中的一个数字,并要求同时满足下列条件: (1)afi; (2)bd, gh, ce (3)a+b+d+f=f+g+h+i=i+e+c+a=P程序要求: 根据输入的边长之和P 输出所有满足上述条件的三角形的个数以及其中的一种方案。*东北54321西1 2 3 4 5 6 7 8 9A(1,1)3设有一个NM(l N50, l M 50)的街道(如下图):(40%) B(9,5) 南规定行人从A(1,1)出发,在街道上只能向东或北方向行走。 如下为N3,M=3的街道图,从A出发到达B共有6条可供行走的路径:1.A-A1-A2-A5-B2. A-A1-A4-A5-B3. A-A1-A4-A7-B 4. A-A3-A4-A5-B 5. A-A3-A4-A7-B 6. A-A3-A6-A7-B A6 A7 B(N,M) A3 A4 A5 A A1 A2若在NM的街道中,设置一个矩形障碍区域(包括围住该区域的街道)不让行人通行,如图中用“”表示的部分。此矩形障碍区域用2对顶点坐标给出,前图中的2对顶点坐标为:(2,2),(8,4),此时从 A出发到达B的路径仅有两条。 程序要求:任务一:给出N,M后,求出所有从A出发到达B的路径的条数。 任务二:给出N,M,同时再给出此街道中的矩形障碍区域的2对顶点坐标(X1,y1), (X2,Y2),然后求出此种情况下所有从A出发到达B的路径的条数。 NOIP1998年复赛试题1将1,2,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3的比例,试求出所有满足条件的三个三位数。 例如:三个三位数192,384,576满足以上条件。 30%2用高精度计算出S=1!+2!+3!+n!(n50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1。 输入正整数N,输出计算结果S。 30%3任何一个正整数都可以用2的幂次方表示。例如: 40% 137=27+23+20 同时约定方次用括号来表示,即ab 可表示为a(b)。 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 22+2+20 (21用2表示) 3=2+20 所以最后137可表示为: 2(2(2)+2+2(0)+2(2+2(0)+2(0) 又如: 1315=210 +28 +25 +2+1 所以1315最后可表示为: 2(2(2+2(0)+2)+2(2(2+2(0)+2(2(2)+2(0)+2+2(0) 输入:正整数(n20000) 输出:符合约定的n的0,2表示(在表示中不能有空格)NOIP1999年复赛试题第一题 Cantor表(30分)现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/1 3/2 3/3 4/1 4/2 5/1 1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/1 3/2 3/3 4/1 4/2 5/1 我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2, 输入:整数N(1N10000000) 输出:表中的第N项 样例: INPUT OUTPUT N=7 1/4第二题 回文数(30分)若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个10进制数56,将56加56(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N(2=N=10,N=16)进制数M,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!” 样例: INPUT OUTPUT N = 9 M= 87 STEP=6第三题 旅行家的预算(40分) 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。 样例: INPUT D1=275.6 C=11.9 D2=27.4 P=2.8 N=2油站号I离出发点的距离Di每升汽油价格Pi1102.02.92220.02.2OUTPUT26.95(该数据表示最小费用)NOIP2000年复赛试题 普及组 题一 计算器的改良 (18分) 问题描述 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例: 43x8 6a5122a 512y0ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及、这三个数学符号(当然,符号“”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。 问题求解 编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位)输出至屏幕。 你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。 样 例 输入:6a5122a输出:a0.750 普及组 题二税收与补贴问题 (20分) 问题描述 每样商品的价格越低,其销量就会相应增大。现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减。(我们假设价格及销售量都是整数) 对于某些特殊商品,不可能完全由市场去调节其价格。这时候就需要政府以税收或补贴的方式来控制。(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币) 问题求解 你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格,以及在各种价位上的销售情况。要求你确定政府对此商品是应收税还是补贴的最少金额(也为整数),才能使商家在这样一种政府预期的价格上,获取相对其他价位上的最大总利润。 总利润 = 单位商品利润 * 销量 单位商品利润 = 单位商品价格 单位商品成本 ( 税金 or + 补贴) 输 入 输入的第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数为商品成本,第二个整数为以成本价销售时的销量售,以下若干行每行都有两个整数,第一个为某价位时的单价,第二个为此时的销量,以一行-1,-1表示所有已知价位及对应的销量输入完毕,输入的最后一行为一个单独的整数表示在已知的最高单价外每升高一块钱将减少的销量。 输 出 输出有两种情况:若在政府预期价上能得到最大总利润,则输出一个单独的整数,数的正负表示是补贴还是收税,数的大小表示补贴或收税的金额最小值。若有多解,取绝对值最小的输出。 如在政府预期价上不能得到最大总利润,则输出“NO SOLUTION”. 样 例 输入 31 28 130 30 120 31 110 -1 1 15 输出 4 普及组 题三 乘积最大 (26分) 问题描述 今年是国际数学联盟确定的“2000世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:有一个数字串:312, 当N=3,K=1时会有以下两种分法:1) 3*12=362) 31*2=62这时,符合题目要求的结果是:31*2=62 现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。 输 入 程序的输入共有两行: 第一行共有2个自然数N,K(6N40,1K6) 第二行是一个长度为N的数字串。 输 出 结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数)。 样 例 输入4 21231输出62 普及组 题四 单词接龙 (36分) 问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。 输 入 输入的第一行为一个单独的整数n(n=20)表示单词数,以下n行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在. 输 出 只需输出以此字母开头的最长的“龙”的长度 样 例 : 输入5attouchcheatchoosetacta输出23 (连成的“龙”为atoucheatactactouchoose) NOIP2001年复赛试题题一:数的计数 (20分)问题描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n1000),然后对此自然数按照如下方法进行处理 l不作任何处理: z茬它的左边加上一个自然数,但该自然数不能超过原数的一半; 3加上数后,继续按此规则进行处理,直到不能再而 自然数为止。样例 输入:6 满足条件的数为 6 (此部分不必输出) 6 26 126 36 136 输出:6题二:最大公约数与最小公倍数问题 (20分)问题描述 输入二个正整数x0,y0(2x0100000,2y01000000),求出满足下列条件的P、Q的个数。 条件:1.P、Q是正整数 二要求P、Q以xO为最大公约数,以yO为最小公倍数。 试求,满足条件的所有可能的两个正整数的个数。样例 输入:x0=3 y0=60 输出:4 说明:(不用输出)此时的 P Q 分别为, 3 60 15 12 12 15 60 3所以,满足条件的所有可能的两个正整数的个数共4种。题三:求先序排列(30分)问题描述 给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度8)。样例 输入:BADC BDCA 输出:ABCD题四:装箱问题 (30分)问题描述 有一个箱子容量为v(正整数,ov20000),同时有n个物品(on30),每个物品有一个体积 (正整数)。要求从m个物品中,任取若千个装入箱内,使箱子的剩余空间为最小。样例输入:24 一个整数,表示箱子容量6 一个整数,表示有n个物品8 接下来n行,分别表示这n个物品的各自体积。312797输出: 0一个整数,表示箱子剩余空间。NOIP2002年复赛试题题一: 级数求和问题描述:已知:Sn=1+1/2+1/3+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。现给出一个整数K(1=KK 问题分析:这道题目非常简单,题目的意思已经把该题的算法描述得再清楚不过了,初始时Sn=0,n=0,然后每次循环nn+1,SnSn+1/n,,直到Sn大于K,最后输出K。另外实型(Real是最慢的,建议用Extended)的运算速度不是很快,而K为115之间的整数,所以最后可以交一张表(常量数组),以达到最好的效果参考程序:program c1;var K: Byte; n: Longint; Sn: Extended;begin Readln(K); Sn := 0; n := 0; Repeat Inc(n); Sn := Sn + 1 / n; Until Sn k; Writeln(n);end.题二: 选数 问题描述:已知n(1=n=20)个整数x1,x2,xn(1=xi=5000000),以及一个整数k(kn)。从n个整数中任选k个整数相加,可分别得到一系列的和。现在,要求你计算出和为素数共有多少种。 问题分析:本题动态规划无从下手,也无数学公式可寻,看来只能搜索(组合的生成算法),其实1=n=20这个约束条件也暗示我们本题搜索是有希望的,组合的生成可用简单的DFS来实现,既搜索这k个整数在原数列中的位置,由于组合不同于排列,与这k个数的排列顺序无关,所以我们可以令aIaI+1(aI表示第I个数在原数列中的位置),这个组合生成算法的复杂度大约为C(n,k),下面给出递归搜索算法的框架:Proc Search(dep) Beginfor i - adep - 1 + 1 to N - (M - dep) do1:adep - i2:S - S + xi3:if dep k then Search(dep + 1) else 判断素数4:S 1)是否为素数最简单的方法就是看是否存在一个素数a(a=sqrt(P)是P的约数,如果不存在,该数就为素数,由于在此题中1=xi=5000000,n=20,所以要判断的数P不会超过100000000,sqrt(p)=10000,因此,为了加快速度,我们可以用筛选法将210000之间的素数保存到一个数组里(共1229个),这样速度估计将提高56倍。特别注意:本题是要求使和为素数的情况有多少种,并不是求有多少种素数,比赛时就有很多同学胡乱判重而丢了12分;还有1不是素数,在判素数时要对1做特殊处理。 参考程序program c2;const MaxN = 20;var N, M, i: Byte; ans, s: Longint; x: array1 . MaxN of Longint; f: array1 . 10000 of Byte; p: array1 . 1229 of Integer;procedure Get_Prime;var i, j, s: Integer;begin s := 0; f1 := 0; for i := 2 to 10000 do fi := 1; for i := 2 to 10000 do if fi = 1 then begin Inc(s); ps := i; j := 2 * i; while j = 10000 do begin fj := 0; Inc(j, i) end; endend;procedure Work(S: Longint);var i: Integer;begin if S = 10000 then Inc(ans, fS) else begin i := 1; while sqr(longint(pi) = S do begin if S mod pi = 0 then Exit; Inc(i) end; Inc(ans) endend;procedure Search(d, pre: Byte);var i: Byte;begin for i := pre + 1 to N - (M - d) do begin Inc(S, xi); if d = M then Work(S) else Search(d + 1, i); Dec(S, xi) endend;begin Readln(N, M); for i := 1 to N do Read(xi); ans := 0; S := 0; Get_Prime; Search(1, 0); Writeln(ans)end.题三: 产生数 问题描述:给出一个整数n(n1030)和k个变换规则(k5,5-7,那么3-7),那么对于一个数a(用数组存,长度为n),根据乘法原理它能产生出Fa1*Fa2*Fa3*Fan个不同整数,相信这一点大家不难理解。那么现在的关键就是如何求Fi,由于这些变换规则都是反应的数字与数字之间的关系,这很容易让我们想到用图来表示这种关系: 1: 建立一个有向图G,初始化gi, j False 2: 如果数字i能直接变成数字j,那么gi, j True容易知如果数字i能变成数字j,那么i到j必须存在路径,否则i是不可能变成j的,这样一来,Fi的求解就显得非常简单了,求一个顶点v包括本身能到达的顶点数的方法相当多,可以用BFS,DFS,Dijkstra,Floyd,这里介绍一种类似Floyd的有向图的传递闭包算法,该算法实现简单 ,在解决这类问题时比Floyd效率更高,所谓有向图的传递闭包就是指可达性矩阵A=ai, j,其中 ai, j = True 从i到j存在通路 ai, j = False 从i到j不存在通路所以有向图传递闭包算法只需将floyd算法中的算术运算符操作+用相应的逻辑运算符and和or代替就可以了,其算法如下:for k 1 to n dofor i 1 to n do for j 1 to n do ai, j = ai, j or (ai, k and ak, j)最后值得注意的是当n很大时输出可能会超过Comp类型的范围,所以要使用高精度乘法,由于高精度算法是信息学竞赛中的基础,这里就不在详述。参考程序 program c3;const MaxLen = 30;var Len, M: Byte; a: array1 . MaxLen of Byte; f: array0 . 9 of Byte; g: array0 . 9, 0 . 9 of Boolean;procedure Init;var i: Byte; St: String;begin Readln(st); Len := 0; M := 0; i := 1; while sti in 0 . 9 do begin Inc(Len); aLen := Ord(sti) - 48; Inc(i) end; Repeat if sti in 0 . 9 then M := M * 10 + Ord(sti) - 48; Inc(i) Until i Length(st)end;procedure Main;var i, j, k: Byte;begin Fillchar(g, Sizeof(g), False); for k := 1 to M do begin Readln(i, j); gi, j := True end; for k := 0 to 9 do for i := 0 to 9 do for j := 0 to 9 do gi, j := gi, j or (gi, k and gk, j); Fillchar(f, Sizeof(f), 0); for i := 0 to 9 do gi, i := True; for i := 0 to 9 do for j := 0 to 9 do Inc(fi, Ord(gi, j)end;procedure Show;var i, j, k, g: Byte; ans: Array1 . MaxLen of Byte;begin Fillchar(ans, Sizeof(ans), 0); ans1 := 1; for k := 1 to Len do begin g := 0; for i := 1 to MaxLen do begin ansi := ansi * fak + g; g := ansi div 10; ansi := ansi mod 10 end end; j := MaxLen; While ansj = 0 do Dec(j); for i := j downto 1 do Write(ansi); Writelnend;begin Init; Main; Showend.题四: 过河卒问题描述:棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数问题分析: 这是一道老得不能再老的题目了,很多书上都有类似的题目,NOIp97普及组的最后一题就和本题几乎一模一样。有些同学由于没见过与之类似的题目,在比赛时用了搜索,当n到14,15左右就会超时,其实,本题稍加分析,就能发现:要到达棋盘上的一个点,只能从左边过来或是从上面下来,所以根据加法原理,到达某一点的路径数目,等于到达其相邻上,左两点的路径数目之和,因此我们可以使用逐列(或逐行)递推的方法来求出从起始顶点到重点的路径数目,即使有障碍(我们将马的控制点称为障碍),这一方法也完全适用,只要将到达该点的路径数目置为0即可,用Fi,j表示到达点(i,j)的路径数目,gi,j表示点(i, j)有无障碍,递推方程如下: F0,0 = 1Fi,j = 0 gx,y = 1 Fi,0 = Fi-1,0 i 0, gx,y = 0F0,j = F0,j-1 j 0, gx,y = 0Fi,j = Fi-1,j + Fi,j-1 i 0, j 0, gx, y = 0本题与第三题一样,也要考虑精度问题,当n,m都很大时,可能会超过MaxLongInt,所以要使用Comp类型计数(Comp类型已经足够了,即使n=20,m=20,没有任何障碍的情况下的结果也只有14,5位的样子)。 参考程序program c4;const dx: array1 . 8 of Shortint = (-2, -1, 1, 2, 2, 1, -1, -2); dy: array1 . 8 of Shortint = (1, 2, 2, 1, -1, -2, -2, -1);var n, m, x, y, i, j: Byte; g: array0 . 20, 0 . 20 of Byte; f: array0 . 20, 0 . 20 of Comp;begin Readln(n, m, x, y); Fillchar(g, Sizeof(g), 0); gx, y := 1; for i := 1 to 8 do if (x + dxi = 0) and (x + dxi = 0) and (y + dyi = m) then gx + dxi, y + dyi := 1; f0, 0 := 1; for i := 1 to n do if gi, 0 = 0 then fi, 0 := fi - 1, 0; for i := 1 to m do if g0, i = 0 then f0, i := f0, i - 1; for i := 1 to n do for j := 1 to m do if gi, j = 0 then fi, j := fi - 1, j + fi, j - 1; Writeln(fn, m: 0: 0)end.NOIP2003年复赛试题题一、乒乓球(Table.pas)【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):WWWWWWWWWWWWWWWWWWWWWWLW在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。【输入样例】WWWWWWWWWWWWWWWWWWWWWWLWE【输出样例】11:011:01:121:02:1题二、数字游戏(Game.pas)【问题描述】丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。例如,对于下面这圈数字(n=4,m=2):2-143当要求最小值时,(2-1) mod 10)(4+3) mod

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论