Pascal冲刺练习题.docx
- 文档编号:7694134
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:16
- 大小:34.73KB
Pascal冲刺练习题.docx
《Pascal冲刺练习题.docx》由会员分享,可在线阅读,更多相关《Pascal冲刺练习题.docx(16页珍藏版)》请在冰豆网上搜索。
Pascal冲刺练习题
Pascal冲刺练习题20题
简单(5题):
1.作息时间(time)
【问题描述】
小K告诉了小新自己一天的安排:
“8:
30:
30去超市”、“9:
10:
10去朋友家”、“10:
20:
10去…”、…。
小新看着复杂的安排表,晕了头,因为时间太混乱了,小K没有按照时间先后告诉他。
于是他需要你帮助他把这些时间按照先后顺序输出。
【输入文件】
第一行一个整数N表示有多少个时间;
之后N行,每行空格隔开3个数字,依次分别表示时,分,秒。
【输出文件】
输出有N行,按照时间先后顺序输出所有的时间,输出的时候依然是每行3个空格隔开的数字,分别表示时,分,秒。
如果有2个时间是相同的,你仍然需要输出两次。
【样例输入】
4
32221
32122
32222
32121
【样例输出】
32121
32122
32221
32222
2、整数处理(integ)
【问题描述】
电脑老师让小明编程做一道题:
输入一个正整数A(A≦100000000),如果A的个位数字是5,则统计A能被5整除多少次?
否则,统计A当中含有多少个“0”?
你能做吗?
例如:
【输入格式1】:
125
【输出格式1】:
3
【输入格式2】:
305160
【输出格式2】:
2
3、求素数
计算机发明之前,数学家们需要手工进行数学计算。
遇到复杂计算往往要花去大量时间,而且正确率也不高。
现在可不一样了,有了计算机人们能快速而正确地求解数学问题。
小雪是个中学生,可已经能熟练的运用计算机编写程序了。
为了提高自己的计算机水平,小学经常将数学老师布置的题目用计算机加以求解。
有一次,数学老师提出这样一个问题:
对于给定的一对自然数
与
在
与
之间(包含
和
)有多少素数呢?
小雪很快得出了答案。
现在请你也编写程序实现。
(1不为素数)
输入:
文件的第一行为一个数
,表示有
对自然数。
以后
行每行有两个自然数,第一个自然数为
,第二个自然数为
。
输出:
依次输出每一对数之间的素数个数。
每个结果占一行。
例如:
输入:
2
15
1020
输出:
3
4
4、偶数世界(even)
【问题描述】
假想我们生活在偶数世界里,在这个世界中只有正偶数。
下面就是这个世界中数的集合:
Z={2,4,6,8,10……};在偶数世界中,除法有它特殊的规则,如果数a能被数b整除,那么a除以b的商也一定是个偶数。
例如2能整除8,因为2*4=8。
但是2却不能整除6,因为2*3=6。
3是6除以2的商,但是它不是偶数。
对于一个数来说,如果没有任何一个比它小的偶数能够整除它,那么它就是偶数世界中的“质数”。
下面是几个从小到大排列的“质数”:
2,6,10,14,18,22,26,30……
现在给你n(2<=n<=10)个偶数世界中的数,每个数都不大于1000且没有任何两个数相同。
请问在这组偶数中,是否存在两个数的和是上面所描述的“质数”。
如果存在不止一对数的和是“质数”,那么请输出那个最大的“质数”。
如果不存在任何一对数的和为“质数”,则输出-1。
每组数据的第一行为n,第二行为n个偶数世界中的数,用空格隔开。
对于每组数据你只需要输出那个由任意两个数的和组成的最大“质数”;如果没有,则输出-1。
【输入格式1】
3
246
【输出格式1】
10
(解释:
2+4=6,4+6=10,其中6和10都是“质数”,但是要输出最大的。
)
【输入格式2】
3
2610
【输出格式2】
-1
(解释:
2+6=8,2+10=12,6+10=16,这三个和都不是“质数”,所以输出-1)
5、拆分整数(cfnum)
【问题描述】
输入一个正整数N(不超过一百位),如果N是偶数,则拆分N的各个数字相加求和;如果N是奇数,则拆分N的各个数字相乘求积。
输入输出样例:
【输入格式】:
126 【输出格式】:
H=9
【输入格式】:
123 【输出格式】:
J=6
数据范围:
30%的数据在二十位以内;
100%的数据在一百位以内
5.a+b(sum)
【问题描述】
相信a+b问题对大家来说,应该不陌生了吧。
给出两个整数a和b,求a和b的和。
【输入文件】
第一行一个整数N(N<100),表示求和的数字对数;
接下来N行,每行两个整数a和b。
【输出文件】
N行,每行一个数表示两个数a,b的和。
【样例输入】
1
35
【样例输出】
8
【数据范围】
对于70%的数据,0<=a,b<=1000;
对于100%的数据,0<=a,b<=10100。
中等(10题):
6、逃亡的准备(hallows)
【问题描述】
HarryPotter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品,现在给出该种物品的数量、体积、价值的数值,希望你能够算出怎样能使背包的价值最大的组合方式,并且输出这个数值,赫敏会非常地感谢你。
【输入文件】(hallows.in)
(1)第一行有2个整数,物品种数n和背包装载体积v。
(2)2行到n+1行每行3个整数,为第i种物品的数量m、体积w、价值s。
.
【输出文件】(hallows.out)
输出文件hallows.out仅包含一个整数,即为能拿到的最大的物品价值总和。
【输入样例】
210
343
225
【输出样例】
13
【注释】
选第一种一个,第二种两个。
结果为3*1+5*2=13
7、搬砖头(rock)
小可可一直对中国五千年的古老文明非常感兴趣,学习历史知识之余,他报名参加了少年考古队,跟随正式的考古队进行考古发掘,通过实践来更好的领会书本知识。
这次考古队发现了一个非常巨大的古墓,具有非常高的考古价值,小可可随队来到了考古现场。
经过紧张的发掘,古墓的墓道终于显露出来,但是它被一块块方砖封住了,现在小可可的任务就是帮助考古队将这些方砖移走,打通墓道。
由于这些保存完好的古代方砖也是珍贵的文物,所以规定一次最多只能搬三块砖。
小可可在搬砖的过程中一直在思考一个问题,他很想知道将这些砖头搬走共有多少种不同的搬法。
例如,现在总共有4个砖头,那么可以选择的方法有以下7种:
1,1,1,1(分4次搬完,每次搬一个砖头)
1,2,1(分3次搬完,第一次搬一个,第二次搬两个,第三次搬一个)
1,1,2(分3次搬完,第一次搬一个,第二次搬一个,第三次搬两个)
2,1,1(分3次搬完,第一次搬两个,第二次搬一个,第三次搬一个)
2,2(分2次搬完,第一次搬两个,第二次搬两个)
1,3(分2次搬完,第一次搬一个,第二次搬三个)
3,1(分2次搬完,第一次搬三个,第二次搬一个)
输入:
共一行。
是一个1~1000的正整数N,表示共有N块砖头。
输出:
共一行。
输出一个正整数表示N块砖头移动的方法数。
输入:
(rock.in):
4
输出:
(rock.out):
7
8、找字符(fch)
【问题描述】
有一天,小明编了一个程序,能很快找出一个字符串中出现次数最多的字符,你能做到吗?
输入:
一个字符串(长度不超过50)
输出:
按字符在字符串中出现的先后顺序,显示出现次数最多的字符
样例
【输入格式】:
ACABBCCDDB【输出格式】:
CB
9.双胞胎的烦恼(twins.bas/twins.pas/twins.c)
【问题描述】
有一对双胞胎(哥哥和妹妹),关系特别好,什么事都相互谦让。
唯独每年到他们生日的那天,他们就会或多或少的有一些不愉快,渐渐的,成了他们的烦恼。
事情是这样的。
每年到他们过生日的时候,亲朋好友都会给他们送来礼物,表示祝贺。
有的人给他们买同样的礼物,有的人买不一样的礼物。
每件礼物都有相应的价值。
送礼物的人都没有明确说哪个礼物给谁,作为两个双胞胎,他们都希望自己收到的礼物价值高些。
这不,今年生日所有的朋友送的礼物都是2本书(可能是希望他们好好读书吧),一本给哥哥,一本给妹妹。
为了减少矛盾,双胞胎的妈妈让你来帮忙分配,要求使得两人所获得书本的价值和之间的差距尽可能的小(差距越小,双胞胎之间的不愉快程度越低)。
例如,有4个人送礼物,每个人的礼物价值(两个数)用一对括号括起来表示,如:
(3,5),(7,11),(8,8),(2,9),可以把3,7,8,2分配给妹妹,其余的给哥哥,价值差为:
5+11+8+9-3-7-8-2=13;也可以把3,7,8,9给妹妹,其余的给哥哥,价值差为:
3+7+8+9-5-11-8-2=1,这是最好的方案。
【输入文件】
第一行包含一个整数N(1≤N≤30),表示礼物的数量,接下来N行,每行两个整数,表示每份礼物两本书的价值(价值范围在1到30之间)。
【输出文件】
输出一个非负整数,表示最小的价值差。
【样例输入】
4
35
711
88
29
【样例输出】
1
10、上学路线(route)
【问题描述】
你所在的城市街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道。
南北方向a条街道从西到东一次编号为1到a而东西方向的b条街道从南到北一次编号为1到b,南北方向的街道i和东西方向的街道j的交点记为(i,j).
你住在(1,1)处,而学校在(a,b)处,你骑自行车去上学,自行车只能沿着街道走,而且为了缩短时间只允许沿着东北等方向行驶。
现在有N个交叉路口在施工(X1,Y1),(X2,Y2),(Xn,Yn),这些路口暂时不能通车的。
问你上学有多少种走法?
【输入格式】
第一行包含两个整数a和b,并且满足1≦a,b≦16.
第二行包含一个整数N,表示有N个路口在维修(1≦N≦40)。
接下来N行,每行两个整数X_i,Y_i,描述路口的位置。
【输出格式】
输出一个整数表示从(1,1)到(a,b)的行车路线总数。
【样列输入输出格式】
Route.in
Route.out
54
3
22
23
42
5
11、水王争霸
【描述】
众所周知,IOIForum有很多水王,他们的发贴数是如此之多,以至于必须要用高精度数才能保存。
为了迎接国庆,IOIForum决定举行一次水王争霸赛,比赛的规则是将这些水王截止到2003年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。
每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。
终于,激动人心的一刻到来了,2003年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。
【输入格式】
输入一个1到1000的整数N,表示总共有N位水王参加了争霸赛。
以下依次给出每位水王的描述,一个仅由字母和数字组成的长度不超过20的字符串,代表这个水王的ID,一个高精度的整数(非负数),代表这个水王的发贴数。
注意,这个整数的首位没有不必要的0。
考虑到IOIForum的数据库是有限的,所有水王发贴数的总长度(注意,是总长度而不是总和)不会超过10000。
除了子母、数字和必要的换行,输入中不会出现空格等字符。
【输出格式】
依次输出按照发贴数从大到小排好序的各位水王的ID,每个ID占据单独的一行。
不能有任何多余的字符。
若几个ID的发贴数相同,则按照ID的字典顺序先后排列。
【输入样例】:
2lowai153********61243453zhouyuan23453265344
【输入样例】:
lowaizhouyuan
12、诗人小G
【问题描述】
小G是一个出色的诗人,经常作诗自娱自乐。
但是,他一直被一件事情所困扰,那就是诗的排版问题。
一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的。
小G给每首诗定义了一个行标准长度(行的长度为一行中符号的总个数),他希望排版后每行的长度都和行标准长度相差不远。
显然排版时,不应改变原有的句子顺序,并且小G不允许把一个句子分在两行或者更多的行内。
在满足上面两个条件的情况下,小G对于排版中的每行定义了一个不协调度,为这行的实际长度与行标准长度差值绝对值的P次方,而一个排版的不协调度为所有行不协调度的总和。
小G最近又作了几首诗,现在请你对这首诗进行排版,使得排版后的诗尽量协调(即不协调度尽量小),并把排版的结果告诉他。
【输入文件】
输入文件poet.in包含多组数据。
第一行包含一个整数T,表示诗的数量,接下来是T首诗,这里一首诗即为一组数据。
每组数据的第一行包含三个由空格分隔的正整数N、L、P,其中N表示这首诗句子的数目,L表示这首诗的行标准长度,P的含义见问题描述。
从第2行开始,每行为一个句子,句子由英文字母、数字、标点符号等符号组成(ASCII码33~127,但不包含‘-’)。
【输出文件】
输出文件为poet.out。
对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度,接下来若干行,表示你排版之后的诗。
注意:
在同一行的相邻两个句子之间需要用一个空格分开。
如果有多个可行解,它们的不协调度都是最小值,则输出任意一个解均可。
若最小的不协调度超过1018,则输出"Toohardtoarrange"(不包含引号)。
每组数据结束后输出"--------------------"(不包括引号),共20个"-","-"的ASCII码为45,请勿输出多余的空行或者空格。
【输入样例】
4
493
brysj,
hhrhl.
yqqlm,
gsycl.
492
brysj,
hhrhl.
yqqlm,
gsycl.
110056
poet
110046
poet
【输出样例】
108
brysj,
hhrhl.
yqqlm,
gsycl.
--------------------
32
brysj,hhrhl.
yqqlm,gsycl.
--------------------
Toohardtoarrange
--------------------
1000000000000000000
poet
--------------------
13、双色球彩票(lottery)
每个星期小庆都会拿出一部分自己的零花钱买双色球彩票,一来是为了支持国家的彩票发展,其次希望通过中奖来实现自己的愿望。
"双色球"每注投注号码由6个红色球号码和1个蓝色球号码组成。
红色球号码从1-33中选择;蓝色球号码从1-16中选择。
中奖规定为:
一等奖:
7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同);
二等奖:
6个红色球号码相符;
三等奖:
5个红色球号码和1个蓝色球号码相符;
四等奖:
5个红色球号码或4个红色球号码和1个蓝色球号码相符;
五等奖:
4个红色球号码或3个红色球号码和1个蓝色球号码相符;
六等奖:
1个蓝色球号码相符(有无红色球号码相符均可)。
并且规定,每张彩票只能中其能中的最高的奖项,不计复奖。
现在已知中奖号码和小庆买的若干张彩票的号码,请你写一个程序帮助小庆判断他买的彩票的中奖情况。
输入:
输入文件中第一行只有一个自然数n(n<1000),表明小庆买的彩票张数;第二行存放了7个经公证处摇出的中奖球号码,每个号码之间用四个空格隔开,前6个号码代表中奖红球的号码,第7个号码代表中奖蓝色球的号码;随后的n行表示小庆买的n张彩票的号码,每行的前6个数都代表红球的号码;第7个数代表蓝色球的号码,每个数之间也用四个空格隔开。
输出:
单行一次输出小庆一等奖至六等奖的中奖张数,中间用一个空格隔开。
【样例输入】:
(lottery.in)
2
911225312214
21192231259
11192311412
【样例输出】:
(lottery.out)
010010
14、选班长(Monitor)
小雪所在的班级有n个学生(n<100),现在要选出一个同学当班长。
采用的方法是:
先将所有同学排队站好,然后从头到尾1至k循环报数(k<10),报到k的同学退出。
再由尾到头1至k循环报数,报到k的同学退出……依次类推,当剩下k-1个同学时,报1的同学为班长。
小雪想当班长为大家服务,请问小雪开始站队时,从头开始数,应该站在什么位置。
请你编程帮小雪实现。
输入:
只有一行,为n和k的值,两者中间用一个空格隔开。
输出:
中输出小雪开始时应该站的位置
【样例输入】:
1003
【样例输出】:
77
15、数位和与积
试编写程序求出自然数
的各个数位之和与之积。
输入:
文件中的以此存放了若干个自然数
。
输出:
各行依次输出每一个自然数
的各个数位之和与之积。
【样例输入】:
9223
【样例输出】:
1118
56
困难(5题):
16、(问题)
【问题描述】:
今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。
在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。
活动中,主持人给所有参加活动的选手出了这样一道题目:
设有一个长度N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。
同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:
有一个数字串:
312,当N=3,K=1时会有以下两种分法:
1)3*12=36
2)31*2=62
这时,符合题目要求的结果是:
31*2=62
现在,请你帮助你的好朋友XZ设计一个程序,求得正确的答案。
输入:
程序的输入共有两行:
第一行共有2个自然数N,K(6<=N<=10,1<=K<=6)
第二行是一个长度为N的数字串。
输出:
结果显示在屏幕上,相对于输入,应输出所求得的最大乘积(一个自然数)。
【样例输入】:
42
1231
【样例输出】:
62
17、(矩形阵)
【问题描述】:
设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放人数字0。
如下图所示(见样例):
A
00000000
001300600
00007000
000140000
021000400
001500000
014000000
00000000
B
某人从图的左上角的A点出发,可以向下行走,也可以向右走,直到到达右下角的B点。
在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。
此人从A点到B点共走两次,试找出2条这样的路径,使得取得的数之和为最大。
输入:
输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个
表示位置,第三个数为该位置上所放的数。
一行单独的0表示输入结束。
输出:
只需输出一个整数,表示2条路径上取得的最大的和。
【样例输入】:
8
2313
266
357
4414
5221
564
6315
7214
000
【样例输出】:
67
18、汽油
一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。
给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=l,2,...N)。
计算结果四舍五入至小数点后两位。
如果无法到达目的地,则输出“Nosolution”。
输入文件格式:
第一行:
D1CD2PN
接下来N行,每行2个数:
每个油站离出发点的距离Di,每升汽油价格Pi
样例:
输入文件:
t1.in
275.611.927.42.82
102.029
220.02.2
输出文件:
t1.out
26.95(该数据表示最小费用,保留小数点后2位)
19、植物大战僵尸
【问题描述】
Plantsvs.Zombies(PVZ)是最近十分风靡的一款小游戏。
Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻。
该款游戏包含多种不同的挑战系列,比如ProtectYourBrain、Bowling等等。
其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies对Plants发起进攻。
现在,我们将要考虑的问题是游戏中Zombies对Plants的进攻,请注意,本题中规则与实际游戏有所不同。
游戏中有两种角色,Plants和Zombies,每个Plant有一个攻击位置集合,它可以对这些位置进行保护;而Zombie进攻植物的方式是走到植物所在的位置上并将其吃掉。
游戏的地图可以抽象为一个N行M列的矩阵,行从上到下用0到N–1编号,列从左到右用0到M–1编号;在地图的每个位置上都放有一个Plant,为简单起见,我们把位于第r行第c列的植物记为Pr,c。
Plants分很多种,有攻击类、防守类和经济类等等。
为了简单的描述每个Plant,定义Score和Attack如下:
Score[Pr,c]
Zombie击溃植物Pr,c可获得的能源。
若Score[Pr,c]为非负整数,则表示击溃植物Pr,c可获得能源Score[Pr,c],若为负数表示击溃Pr,c需要付出能源-Score[Pr,c]。
Attack[Pr,c]
植物Pr,c能够对Zombie进行攻击的位置集合。
Zombies必须从地图的右侧进入,且只能沿着水平方向进行移动。
Zombies攻击植物的唯一方式就是走到该植物所在的位置并将植物吃掉。
因此Zombies的进攻总是从地图的右侧开始。
也就是说,对于第r行的进攻,Zombies必须首先攻击Pr,M-1;若需要对Pr,c(0≤c 在本题的设定中,Plants的攻击力是无穷大的,一旦Zombie进入某个Plant的攻击位置,该Zombie会被瞬间消灭,而该Zombie没有时间进行任何攻击操作。 因此,即便Zombie进入了一个Plant所在的位置,但该位置属于其他植物的攻击位置集合,则Zombie会被瞬间消灭而所在位置的植物则安然无恙(在我们的设定中,Plant的攻击位置不包含自身所在位置,否则你就不可能击溃它了)。 Zombies的目标是对Plants的阵地发起进攻并获得最大的能源收入。 每一次,你可以选择一个可进攻的植物进行攻击。 本题的目标为,制定一套Zombies的进攻方案,选择进攻哪些植物以及进攻的顺序,从而获得最大的能源收入。 【输入文件】 输入文件pvz.in的第一行包含两个整数N,M,分别表示地图的行数和列数。 接下来N×M行描述每个位置上植物的信息。 第r×M+c+1行按照如下格式给出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Pascal 冲刺 练习题