信息学竞赛提高专练
- 格式:doc
- 大小:79.00 KB
- 文档页数:10
提高专练2.1 数字三角形(sjx.pas 内存限制32MB 时间限制1S)如右图所示为一个数字三角形,请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。
(只要求输出总和)规定:1、一步可沿左斜线向下或右斜线向下走;2、图形行数小于等于100;3、三角形中的数字为0,1, (99)测试数据通过键盘逐行输入,如上例数据应以如下所示格式输入:输入文件:sjx.in第一行为数据的行数下面五行为对应的数据输出文件:sjx.out数字总最大值。
输入样例:573 88 1 02 7 4 44 5 2 6 5输出样例:302.2最小公倍数和最大公约数问题(num.pas)描述Description输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q 的个数。
条件:1.P、Q是正整数2.要求P、Q以xO为最大公约数,以yO为最小公倍数。
试求,满足条件的所有可能的两个正整数的个数。
输入格式Input Format两个正整数输出格式Output Format满足条件的所有可能的两个正整数的个数样例输入Sample Input (num.in)3 60样例输出Sample Output (num.out)4注释Hint说明:(不用输出)此时的P Q 分别为:3 6015 1212 1560 3所以,满足条件的所有可能的两个正整数的个数共4种2.3 级数求和(sum.pas)描述Description已知:Sn= 1+1/2+1/3+…+1/n。
显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入格式Input Format (sum.in)输入k输出格式Output Format (sum.out)输出n样例输入Sample Input1样例输出Sample Output22.4明明的随机数(random.pas/c/cpp)【问题描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。
然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。
请你协助明明完成“去重”与“排序”的工作。
【输入文件】输入文件random.in 有2行,第1行为1个正整数,表示所生成的随机数的个数:N第2行有N个用空格隔开的正整数,为所产生的随机数。
【输出文件】输出文件random.out 也是2行,第1行为1个正整数M,表示不相同的随机数的个数。
第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
【输入样例】1020 40 32 67 40 20 89 300 400 15【输出样例】815 20 32 40 67 89 300 4002.5香烟(cigarrete.pas 内存限制32MB 时间限制1S)你现在有n支香烟。
香烟抽完后有香烟蒂头。
k个香烟蒂头可以换一支新的香烟。
(k > 1)现在一开始有n支香烟,问最多能抽多少支烟?只能利用你现有的烟,不能向别人借烟。
输入格式:一行,两个整数,n和k。
两个整数均在longint范围之内,答案也在longint 范围之内。
输出格式:输出仅一行,一个整数,表示最多能抽多少支烟。
样例输入:4 3样例输出:52.6 电梯(elevator.pas内存限制32MB 时间限制1S).一个简单的数学模拟题!有一座电梯,它的性能如下:上升一层需要6秒钟,下降一层需要4秒钟,如果要让它停下,它会停5秒钟.现在告诉你它要按顺序到达然后停靠的N个楼层,求它需要的时间.电梯开始在0层,楼梯共有100层.输入(elevator.in):第一行为N(N<=50),接下来的N行是它N个停靠的楼层.输出(elevator.out):只有一行,为所需要的时间.输入样例1:12输入样例2:3231输出样例1:17输出样例2:412.7 选数(select.pas 内存限制32MB 时间限制1S)问题描述:已知n(1<=n<=20)个整数x1,x2,…,xn(1<=xi<=5000000),以及一个整数k(k<n)。
从n个整数中任选k个整数相加,可分别得到一系列的和。
例如当n=4,k=3,4个整数分别为3,7,12,19时,可得到的全部组合及它们的和为3+7+12=22,3+7+19=29,7+12+19=38,3+12+19=34。
现在,要求你计算出和为素数的组合共有多少种。
如上例中,只有一种组合的和为素数:3+7+19=29。
输入:n , kx1,x2, (x)输出:一个整数(满足条件的组合个数)样例输入:4 33 7 12 19输出:12.8 校门外的树(tree.pas)描述Description某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。
我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。
这些区域用它们在数轴上的起始点和终止点表示。
已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。
现在要把这些区域中的树(包括区域端点处的两棵树)移走。
你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入格式Input Format输入的第一行有两个整数:L(1 <= L <= 10000)和M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。
接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出格式Output Format输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
样例输入Sample Input (tree.in)500 3150 300100 200470 471样例输出Sample Output (tree.out)2982.9 方块转换(transform.pas)问题描述一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。
写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式:#1:转90度:图案按顺时针转90度。
#2:转180度:图案按顺时针转180度。
#3:转270度:图案按顺时针转270度。
#4:反射:图案在水平方向翻转(形成原图案的镜像)。
#5:组合:图案在水平方向翻转,然后按照#1-#3之一转换。
#6:不改变:原图案不改变。
#7:无效转换:无法用以上方法得到新图案。
如果有多种可用的转换方法,请选择序号最小的那个。
INPUT FORMAT第一行:单独的一个整数N。
第二行到第N+1行:N行每行N个字符(不是“@”就是“-”);这是转换前的正方形。
第N+2行到第2*N+1行:N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。
SAMPLE INPUT (file transform.in)3@-@---@@-@-@@----@OUTPUT FORMA T单独的一行包括1到7之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。
SAMPLE OUTPUT (file transform.out)12.10 马拦过河卒(程序文件名称为:river.pas)【问题描述】棋盘上A点有一个过河卒,需要走到目标B点。
卒行走的规则:可以向下、或者向右。
同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。
因此称之为“马拦过河卒”。
棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过15的整数),同样马的位置坐标是需要给出的。
现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。
【输入】一行四个数据,分别表示B点坐标和马的坐标。
【输出】一个数据,表示所有的路径条数。
【样例】river.in river.out6 6 3 3 62.11算24点(程序文件名为:point24.pas)几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”。
您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算,要求运算结果等于24。
您可以使用的运算只有:+,-,*,/,您还可以使用()来改变运算顺序。
注意:所有的中间结果须是整数,所以一些除法运算是不允许的(例如,(2*2)/4是合法的,2*(2/4)是不合法的)。
下面我们给出一个游戏的具体例子:若给出的4个操作数是:1、2、3、7,则一种可能的解答是1+2+3*7=24。
【输入】只有一行,四个1到9之间的自然数。
【输出】如果有解的话,只要输出一个解,输出的是三行数据,分别表示运算的步骤。
其中第一行是输入的两个数和一个运算符和运算后的结果,第二行是第一行的结果和一个输入的数据、运算符、运算后的结果;第三行是第二行的结果和输入的一个数、运算符和“=24”。
如果两个操作数有大小的话则先输出大的。
如果没有解则输出“No answer!”【样例】point24.in point24.out1 2 3 7 2+1=37*3=2121+3=242.12 组合的输出(compages.pas)【问题描述】排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。
例如n=5,r=3,所有组合为:l 2 3 l 2 4 1 2 5 l 3 4 l 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5 【输入】一行两个自然数n、r(1<n<21,1<=r<=n)。
【输出】所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。
【样例】compages.in compages.out5 3 1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 52.13 出栈序列统计(stack.pas 请熟悉数据结构栈)【问题描述】栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。
你已经知道栈的操作有两·种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。