范文一:程序设计比赛试题
程序设计比赛试题 最少钱币数:
【问题描述】
这是一个古老而又经典的问题。 用给定的几种钱币凑成某个钱数, 一般而言有多种方式。 例 如:给定了 6种钱币面值为 2、 5、 10、 20、 50、 100,用来凑 15元,可以用 5个 2元、 1个 5元,或者 3个 5元,或者 1个 5元、 1个 10元,等等。显然,最少需要 2个钱币才能 凑成 15元。
你的任务就是, 给定若干个互不相同的钱币面值, 编程计算, 最少需要多少个钱币才能凑成 某个给出的钱数。
【 要求 】
【 数据输入 】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值 M (1<><=2000,整数) ,接着的一行中,第一个整数="" k="">=2000,整数)><><=10)表示币种个数,随后 是="" k="" 个互不相同的钱币面值="">=10)表示币种个数,随后><><=1000)。输入 m="">=1000)。输入>
【 数据输出 】每个测试用例输出一行,即凑成钱数值 M 最少需要的钱币个数。如果凑钱失 败,输出“ Impossible ” 。你可以假设,每种待凑钱币的数量是无限多的。
【 样例输入 】
15
6 2 5 10 20 50 100
1
1 2
【 样例输出 】
2
Impossible
Feli 的生日礼物
【问题描述】
Felicia 的生日是 11月 1日(和 Kitty 是同一天生的哦) 。于是 Feli 请来 Kitty 一起过生日。 Kitty 带来了最新款的“ Kitty 猫”玩具准备送给 Feli ,不过她说,这份礼物可不是白送的。 Feli 要帮她一个忙,才能够得到心仪已久的玩具。 Kitty 说, “ Kitty 猫”玩具已经卖出了 n! 个, n<=10^100*_*, kitty="" 想知道确切的数字,而不是无聊的“一个数加个感叹号”="" 。="" feli="" 听="" 了大吃一惊。要知道,算出="" n!="" 是一个无比艰巨的任务。="" feli="" 告诉="" kitty="" ,就算="" feli="" 算出="" n!="" ,="" kitty="" 也看不下去,="" 因为当="" n="20时," 计算机的长整型已经存不下了="" (kitty="" 只能接受="" 1-9之间="" 的数字)="" 。于是="" kitty="" 说,你只要告诉我="" n!="" 最后一位非="" 0的数就可以了。="" feli="" 想了想,立刻动="" 手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,="" ac="" 的男生将会得到一个="" “="" hello="" kitty="" ”计算器(可编程,="" cpu="" 1thz="" ,="" mem="" 1tmb="" )="" ,="" ac="" 的女生将会得到一个仿真="" “="" hello="" kitty”宠物(善解人意,无须喂养,智商="" 1101,附带写情书功能)="">=10^100*_*,>
【 要求 】
【 数据输入 】每行一个 n ,直到输入数据结束
【 数据输出 】对应输入的 n ,每行输出一个答案
【 样例输入 】
1101
【 样例输出 】
8
【问题描述】
蛇形矩阵是由 1开始的自然数依次排列成的一个矩阵上三角形。
【 要求 】
【 数据输入 】本题有多组数据,每组数据由一个正整数 N 组成。 (N 不大于 100)
【 数据输出 】对于每一组数据,输出一个 N 行的蛇形矩阵。两组输出之间不要额外的空行。 矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
【 样例输入 】
5
【 样例输出 】
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
【问题描述】
两只青蛙在网上相识了, 它们聊得很开心, 于是觉得很有必要见一面。 它们很高兴地发现它 们住在同一条纬度线上, 于是它们约定各自朝西跳, 直到碰面为止。 可是它们出发之前忘记 了一件很重要的事情, 既没有问清楚对方的特征, 也没有约定见面的具体位置。 不过青蛙们 都是很乐观的, 它们觉得只要一直朝着某个方向跳下去, 总能碰到对方的。 但是除非这两只 青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙, 你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。
我们把这两只青蛙分别叫做青蛙 A 和青蛙 B ,并且规定纬度线上东经 0度处为原点,由东 往西为正方向,单位长度 1米,这样我们就得到了一条首尾相接的数轴。设青蛙 A 的出发 点坐标是 x ,青蛙 B 的出发点坐标是 y 。青蛙 A 一次能跳 m 米,青蛙 B 一次能跳 n 米,两 只青蛙跳一次所花费的时间相同。纬度线总长 L 米。现在要你求出它们跳了几次以后才会 碰面。
【 要求 】
【 数据输入 】输入只包括一行 5个整数 x , y , m , n , L ,其中 x ≠ y < 2000000000,="" 0="">< m、="" n="">< 2000000000,="" 0="">< l=""><>
【 数据输出 】输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行
【 样例输入 】
1 2 3 4 5
【 样例输出 】
4
敲七
【问题描述】
输出 7和 7的倍数,还有包含 7的数字例如(17, 27, 37...70, 71, 72, 73... )
【 要求 】
【 数据输入 】一个整数 N 。 (N不大于 30000)
【 数据输出 】从小到大排列的不大于 N 的与 7有关的数字,每行一个。
【 样例输入 】
20
【 样例输出 】
7
14
17
连续邮资问题
【问题描述】
G 国发行了 n 种不同面值的邮票,并且规定每张信封上最多只允许贴 m 张邮票。连续邮资 问题要求对于给定的 n 和 m 的值,给出邮票面值的最佳设计,使得可在 1张信封上贴出从 邮资 1开始, 增量为 1的最大连续邮资区间。 例如, 当 n=5和 m=4时, 面值为 (1,3,11,15,32)的 5种邮票可以贴出邮资的最大连续邮资区间是 1到 70。 编程任务 :对于给定的正整数 m 和 n ,计算出邮票面值的最佳设计。
【 要求 】
【 数据输入 】输入数据每一行给出 2个正整数 m 和 n 的值(1<=n,>=n,><=9) ,最后以="" 0="" 0表="">=9)>
【 数据输出 】对于输以假定 (ai, aj) = 1.
输出包含一个正整数,即为 Andy 家至少养猪的数目。
【 样例输入 】
3
3 1
5 1
7 2
【 样例输出 】
16
kitty 猫的基因编码
【问题描述】
kitty 的基因编码如下定义:kitty 的基因由一串长度 2^k(k<=8)的 01序列构成,为了方便="" 研究,需要把="" ,01序列转换为="" abc="" 编码。用="" t="" (s)="" 来表示="" 01序列="" s="" 的="" abc="" 编码="" t(s)="‘" a'="" (当="" s="" 全由="" '0'="" 组成)="" t(s)="‘" b'="" (当="" s="" 全由="" '1'="" 组成)="" t(s)="‘" c'+t(s1)+t(s2)s1,s2为把="" s="" 等="" 分为="" 2个长度相等的子串比如="" t="" ('00')='A' t('00001111')='CAB'>=8)的>
【 要求 】
【 数据输入 】一行,长度为 2^k,为 kitty 猫的 01基因编码,有多个数据
【 数据输出 】一行,由 ABC 构成的 ABC 编码
【 样例输出 】
01001011
【 样例输出 】
CCCABACCBAB
取石子游戏
【问题描述】
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种 不同的取法, 一是可以在任意的一堆中取走任意多的石子; 二是可以在两堆中同时取走相同 数量的石子。 最后把石子全部取完者为胜者。 现在给出初始的两堆石子的数目, 如果轮到你 先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
【 要求 】
【 数据输入 】 输入包含若干行, 表示若干种石子的初始情况, 其中每一行包含两个非负整数 a 和 b ,表示两堆石子的数目, a 和 b 都不大于 1,000,000,000。
【 数据输出 】输出对应也有若干行,每行包含一个数字 1或 0,如果最后你是胜者,则为 1, 反之,则为 0。
【 样例输入 】
2 1
8 4
4 7
【 样例输出 】
1
勇气的挑战
【问题描述】
给定 n 个点的坐标 (x,y,z),且 n<=50,从点 1出发="" ,="" 怎么样才能走一条路径="" ,="" 访问每个点一次且仅="" 一次="" ,="" 使走过的距离和最小="">=50,从点>
【 要求 】
【 数据输入 】多组数据 . 第 1行 n, 然后 n 行 3个整数坐标
【 数据输出 】每组一行 , 代表最小权和
【 样例输入 】
3
0 0 0
1 1 0
1 -1 0
【 样例输出 】
3.4
统计同成绩学生人数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1608 Accepted Submission(s): 877
【问题描述】
读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。
【 要求 】
【 数据输入 】测试输入包含若干测试用例,每个测试用例的格式为
第 1行:N
第 2行:N 名学生的成绩,相邻两数字用一个空格间隔。
第 3行:给定分数
当读到 N=0时输入结束。其中 N 不超过 1000,成绩分数为(包含) 0到 100之间的一个整 数。
【 数据输出 】对每个测试用例,将获得给定分数的学生人数输出。
【 样例输出 】
3
80 60 90
60
2
85 66
5
60 75 90 55 75
75
【 样例输出 】
1
2
钱币兑换问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 494 Accepted Submission(s): 247
【问题描述】
在一个国家仅有 1分, 2分, 3分硬币,将钱 N 兑换成硬币有很多种兑法。请你编程序计算 出共有多少种兑法。
【 要求 】
【 数据输入 】每行只有一个正整数 N , N 小于 32768。
【 数据输出 】对应每个输入,输出兑换方法数。
【 样例输入 】
2934
12553
【 样例输出 】
718831
13137761
字串数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 405 Accepted Submission(s): 90
【问题描述】
一个 A 和两个 B 一共可以组成三种字符串 :
给定若赶字母和它们相应的个数 , 计算一共可以组成多少个不同的字符串 .
【 要求 】
【 数据输入 】每组测试数据分两行 , 第一行为 n(1<><=26),表示不同字母的个数 ,="" 第二行为="" n="" 个数="">=26),表示不同字母的个数><><=12),表示每种字母的个数 .="" 测试数据以="" n="0为结束">=12),表示每种字母的个数>
【 数据输出 】对于每一组测试数据 , 输出一个 m, 表示一共有多少种字符串 .
【 样例输入 】
2
1 2
3
2 2 2
【 样例输出 】
3
90
小希的数表
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 201 Accepted Submission(s): 48
【问题描述】
Gardon 昨天给小希布置了一道作业,即根据一张由不超过 5000的 N(3<><=100)个正整数 组成的数表两两相加得到="" n*(n-1)/2个和,然后再将它们排序。例如,如果数表里含有四个="" 数="" 1,="" 3,="" 4,="" 9,那么正确答案是="" 4,="" 5,="" 7,="" 10,="" 12,="" 13。小希做完作业以后出去玩了一阵,="" 可是下午回家时发现原来的那张数表不见了,="" 好在她做出的答案还在,="" 你能帮助她根据她的="">=100)个正整数>
【 要求 】
【 数据输入 】包含多组数据,每组数据以一个 N 开头,接下来的一行有按照大小顺序排列 的 N*(N-1)/2个数,是小希完成的答案。文件最后以一个 0结束。
假设输入保证解的存在性和唯一性。
【 数据输出 】对于每组数据,输出原来的数表。它们也应当是按照顺序排列的。
【 样例输入 】
4
4 5 7 10 12 13
4
5 6 7 8 9 10
【 样例输出 】
1 3 4 9
2 3 4 6
士兵队列训练问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 462 Accepted Submission(s): 185
【问题描述】
某部队进行新兵队列训练, 将新兵从一开始按顺序依次编号, 并排成一行横队, 训练的规则 如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢, 再从头开始进行 一至三报数, 凡报到三的出列, 剩下的向小序号方向靠拢, 继续从头开始进行一至二报数。 。 。 , 以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
【 要求 】
【 数据输入 】本题有多个测试数据组,第一行为组数 N ,接着为 N 行新兵人数,新兵人数 不超过 5000。
【 数据输出 】共有 N 行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编 号之间有一个空格。
【 样例输入 】
2
20
40
【 样例输出 】
1 7 19
1 19 37
最简单的计算机
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 287 Accepted Submission(s): 192
【问题描述】
一个名叫是 PigHeadThree 的研究组织设计了一台实验用的计算机,命名为 PpMm 。 PpMm 只能执行简单的六种命令 A , B , C , D , E , F ;只有二个内存 M1, M2;三个寄存器 R1, R2, R3。六种命令的含义如下:
命令 A :将内存 M1的数据装到寄存器 R1中;
命令 B :将内存 M2的数据装到寄存器 R2中;
命令 C :将寄存器 R3的数据装到内存 M1中;
命令 D :将寄存器 R3的数据装到内存 M2中;
命令 E :将寄存器 R1中的数据和寄存器 R2中的数据相加,结果放到寄存器 R3中; 命令 F :将寄存器 R1中的数据和寄存器 R2中的数据相减,结果放到寄存器 R3中。 你的任务是:设计一个程序模拟 PpMm 的运行。
【 要求 】
【 数据输入 】有若干组,每组有 2行,第一行是 2个整数,分别表示 M1和 M2中的初始内 容;第二行是一串长度不超过 200的由大写字母 A 到 F 组成的命令串,命令串的含义如上 所述。
【 数据输出 】对应每一组的输入,输出只有一行,二个整数,分别表示 M1, M2的内容; 其中 M1和 M2之间用逗号隔开。
其他说明:R1, R2, R3的初始值为 0,所有中间结果都在 -2^31和 2^31之间。
【 样例输入 】
100 288
ABECED
876356 321456
ABECAEDBECAF
【 数据输出 】
388,388
2717080,1519268
愚人节的礼物
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 241 Accepted Submission(s): 168
【问题描述】
四月一日快到了, Vayko 想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可 没那么简单, Vayko 为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面 可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。用 ()表示一个盒子, B 表示礼物, Vayko 想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。
【 要求 】
【 数据输入 】 本题目包含多组测试, 请处理到文件结束。 每组测试包含一个长度不大于 1000, 只包含 '(',')'和 'B' 三种字符的字符串,代表 Vayko 设计的礼物透视图。
你可以假设,每个透视图画的都是合法的。
【 数据输出 】对于每组测试,请在一行里面输出愚人指数。
【 样例输入 】
((((B)()))())
(B)
【 样例输出 】
4
1
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 111 Accepted Submission(s): 29
【问题描述】
Gardon 和小希玩了一个游戏, Gardon 随便想了一个数 A (首位不能为 0) , 把它去掉一个数 字以后得到另外一个数 B ,他把 A 和 B 的和 N 告诉了小希,让小希猜想他原来想的数字。 不过为了公平起见, 如果小希回答的数虽然不是 A , 但同样能达到那个条件 (去掉其中的一 个数字得到 B , A 和 B 之和是 N ) ,一样算小希胜利。而且小希如果能答出多个符合条件的 数字,就可以得到额外的糖果。
所以现在小希希望你编写一个程序,来帮助她找到尽可能多的解。
例如, Gardon 想的是 A=31,B=3 告诉小希 N=34,
小希除了回答 31以外还可以回答 27(27+7=34) 所以小希可以因此而得到一个额外的糖果。
【 要求 】
【 数据输入 】输入包含多组数据,每组数据一行,包含一个数 N(1<><=10^9),文件以>=10^9),文件以>
【 数据输出 】 对于每个输入的 N ,输出所有符合要求的解(按照大小顺序排列)如果没有这 样的解,输出
【 样例输入 】
34
152
21
【 样例输出 】
27 31 32
126 136 139 141
No solution.
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 875 Accepted Submission(s): 358
【问题描述】
不死族的巫妖王发工资拉 , 死亡骑士拿到一张 N 元的钞票 (记住 , 只有一张钞票 ), 为了防止自己 在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前 . 死亡骑士:“我 要买道具! ”地精商人:“我们这里有三种道具,血瓶 150块一个,魔法药 200块一个,无敌 药水 350块一个。 ” 死亡骑士:“好的 , 给我一个血瓶。 ” 说完他掏出那张 N 元的大钞递给地精 商人 . 地精商人:“我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费 收了的,嘿嘿。 ”死亡骑士:“??”死亡骑士想,与其把钱当小费送个他还不如自己多买一 点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费。 现在死亡 骑士希望你能帮他计算一下,最少他要给地精商人多少小费。
【 要求 】
【 数据输入 】输入数据的第一行是一个整数 T(1<><=100),代表测试数据的数量 .="" 然后是="" t="" 行测试数据="" ,="" 每个测试数据只包含一个正整数="">=100),代表测试数据的数量><><=10000),n代表死亡骑士手中钞票的 面值="">=10000),n代表死亡骑士手中钞票的>
注意:地精商店只有题中描述的三种道具 .
【 数据输出 】对于每组测试数据 , 请你输出死亡骑士最少要浪费多少钱给地精商人作为小费 .
【 样例输入 】
2
900
250
【 样例输出 】
50
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 170 Accepted Submission(s): 60
【问题描述】
给定平面上若干矩形 , 求出被这些矩形覆盖过至少两次的区域的面积 .
【 要求 】
【 数据输入 】 输入数据的第一行是一个正整数 T(1<><=100),代表测试数据的数量 .="" 每个测试="" 数据的第一行是一个正整数="">=100),代表测试数据的数量><><= 1000),="" 代表矩形的数量="" ,="" 然后是="" n="" 行数据="" ,="" 每一行包含="" 四个浮点数="" ,="" 代表平面上的一个矩形的左上角坐标和右下角坐标="" ,="" 矩形的上下边和="" x="" 轴平行="" ,="" 左右边和="" y="" 轴平行="" .="" 坐标的范围从="" 0到="" 100000.="" 注意="" :本题的输入数据较多="" ,="" 推荐使用="" scanf="" 读="" 入数据="">=>
【 数据输出 】对于每组测试数据 , 请计算出被这些矩形覆盖过至少两次的区域的面积 . 结果保 留两位小数 .
【 样例输入 】
2
5
1 1 4 2
1 3 3 7
2 1.5 5 4.5
3.5 1.25 7.5 4
6 3 10 7
3
0 0 1 1
1 0 2 1
2 0 3 1
【 样例输出 】
7.63
0.00
积木分发
Time limit: 10s Memory limit: 32768K
Total Submit : 1125 Accepted Submit : 365
【问题描述】
歌手 The Pancakes到幼儿园跟小朋友玩耍, 她到达的时候小朋友们已经争着积木玩了。 小朋 友都想要更多的积木砌一个自己喜欢的图形,砌完就可以和 The Pancakes合照。同时, The Pancakes 手上还有一些积木, 她可以把手上的这些积木全部给一个小朋友, 然后等该小朋友 砌完后就可以收回所发的积木和该小朋友原先手上的积木。 但她不知道能否让所有的小朋友 都和她合照,聪明的你可以帮助她吗?
【 要求 】
【 数据输入 】输入包含多个数据。每个数据的第一行是两个正整数 n 和 s , 1≤ n ≤ 10000, 1≤ s ≤ 1000000,表示一共有 n 位小朋友, The Pancakes手上有 s 块积木。以下有 n 行,每行 有两个正整数, a 和 b , 1≤ a , b ≤ 10^9,表示第 i 个小朋友手上有 a 块积木,还需要 b 块积 木才能够砌完。有多少种可能的决斗过程。
例如 N=3,有 6种不同的过程:12->13, 12->23, 13->12, 13->32, 23->21, 23->31。 注意:文件里只有一个整数 N(2≤ N ≤ 1000) 。
【 数据输出 】输出一个整数,为可能的过程的总数除以 10007的余数。
【 样例输入 】
4
【 样例输出 】
96
猴子的争斗
Time limit: 1s Memory limit: 32768K
Total Submit : 184 Accepted Submit : 75
【问题描述】
从前在一个森林里,有 N 只好斗的猴子。一开始,他们互不认识。互不认识的猴子间是无 法避免争斗的, 而且争斗只会发生在两只互不认识的猴子间。 决斗结束后, 这两只猴子和他 们各自的朋友们通过这场决斗相互间都认识了, 争斗便不会再发生在这一大群猴子中的任两 只。由于争斗是比较激烈的,所以同一时间内不会有两场决斗一起发生。经过 N-1次决斗 后,这 N 只猴子间相互都认识了,现在问有多少种可能的决斗过程。例如 N=3,有 6种不 同的过程:12->13, 12->23, 13->12, 13->32, 23->21, 23->31。
【 要求 】
【 数据输入 】文件里只有一个整数 N(2≤ N ≤ 1000) 。
【 数据输出 】输出一个整数,为可能的过程的总数除以 10007的余数。
【 样例输入 】
4
【 样例输出 】
96
Time limit: 10s Memory limit: 32768K
Total Submit : 70 Accepted Submit : 2
【问题描述】
通常我们对一个长度为 n(n≤ 24) 的整数数列进行排序操作, 其实就是讲他们按照从小到大的 顺序重整。 一般情况下我们可以比较任意两个数之间的大小并交换他们的位置, 但这里我们 限制只能数列的某一个前缀序列翻转, 除此之外的任何操作都是不允许的。 更精确地说, 假 设数列 a1, a2, ??, an , 一个合法的操作是把数列变为 ak , ak-1, ??, a2, a1, ak+1, ak+2,?? , an ,其中 1
【 要求 】
【 数据输入 】 输入文件有两行:第一行是一个整数 n , 表示数列的长度。 第二行有 n 个整数, 表示待排序的数列,每个整数的绝对值不大于 32767。
【 数据输出 】输出文件有一行是一个整数 s ,表示完成排序所需的最少步数。
【 样例输入 】
4
3 2 1 4
【 样例输出 】
1
提示:只需要一步就可以完成排序:3 2 1 4 1 2 3 4。
Time limit: 10s Memory limit: 32768K
Total Submit : 100 Accepted Submit : 13
【问题描述】
很久以前, 在世界的某处有一个形状为凸多边形的小岛, 岛上的居民们决定建一个祭坛, 居 民们认为祭坛的位置离岛的顶点处越远越好。 你的任务是求凸多边形内一点, 使其与各顶点 的距离中最短的距离最远, 点在边上也可以。 这样的点可能有多个, 你只需输出这些点与各 顶点的最短距离。
【 要求 】
【 数据输入 】第一行是一个整数 N(3≤ N ≤ 100) 。
接下来 N 行按逆时针顺序给出每个顶点的坐标,每行包含 2个实数,表示顶点的横坐标和 纵坐标 (坐标绝对值小于 10000) 。
【 数据输出 】输出一个实数,表示凸多边形内一点与各顶点的距离中最短的距离的最大值。
【 样例输入 】
3
0 2
9 0
7 7
【 样例输出 】
4.893
Time limit: 1s Memory limit: 32768K
Total Submit : 518 Accepted Submit : 65
【问题描述】
在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子, 青蛙很讨厌踩在这些石子上。 由于桥的长度和青蛙一次跳过的距离都是正整数, 我们可以把 独木桥上青蛙可能到达的点看成数轴上的一串整点:0, 1,??, L (其中 L 是桥的长度) 。 坐标为 0的点表示桥的起点,坐标为 L 的点表示桥的终点。青蛙从桥的起点开始,不停的 向终点方向跳跃。一次跳跃的距离是 S 到 T 之间的任意正整数(包括 S,T ) 。当青蛙跳到或 跳过坐标为 L 的点时, 就算青蛙已经跳出了独木桥。 题目给出独木桥的长度 L , 青蛙跳跃的 距离范围 S,T ,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。
【 要求 】
【 数据输入 】输入的第一行有一个正整数 L (1 <= l="">=><= 109)="" ,表示独木桥的长度。第二行="" 有三个正整数="" s="" ,="" t="" ,="" m="" ,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个="" 数,其中="" 1="">=><= s="">=><= t="">=><= 10,="" 1="">=><= m="">=><= 100。第三行有="" m="" 个不同的正整数分别表示这="" m="" 个="" 石子在数轴上的位置(数据保证桥的起点和终点处没有石子)="" 。所有相邻的整数之间用一个="">=>
【 数据输出 】输出只包括一个整数,表示青蛙过河最少需要踩到的石子数。
【 样例输入 】
10
2 3 5
2 3 5 6 7
【 样例输出 】
2
Time limit: 1s Memory limit: 32768K
Total Submit : 323 Accepted Submit : 89
【问题描述】
小 W 发明了一个游戏, 他在黑板上写出了一行数字 a1,a2, ? .an , 然后给你 m 个回合的机会, 每回合你可以从中选择一个数擦去它,接着剩下来的每个数字 ai 都要递减一个值 bi 。如此 重复 m 个回合,所有你擦去的数字之和就是你所得到的分数。 小 W 和他的好朋友小 Y 玩 了这个游戏,可是他发现,对于每个给出的 an 和 bn 序列,小 Y 的得分总是比他高,所以 他就很不服气。 于是他想让你帮他算算, 对于每个 an 和 bn 序列, 可以得到的最大得分是多 少。这样他就知道有没有可能超过小 Y 的得分。
【 要求 】
【 数据输入 】
第一行,一个整数 n (1<><=200)>=200)>
第二行,一个整数 m (1<><=n)>=n)>
接下来一行有 n 个不超过 10000的正整数, a1,a2? an ,表示原始数字,最后一行有 n 个不 超过 500的正整数, b1,b2? .bn ,表示每回合每个数字递减的值
【 数据输出 】一个整数,表示最大可能的得分
【 样例输入 】
3
3
10 20 30
4 5 6
【 样例输出 】
47
Time limit: 5s Memory limit: 32768K
Total Submit : 295 Accepted Submit : 209
【问题描述】
有这么一个速配电视节目。 N 位男士和 N 位女士要在摄像机前选出他们合适的伴侣。每位 女士按照其对每位男士作为配偶的偏爱程度给每位男士排名次, 每位男士也按照其对每位女 士作为配偶的偏爱程度给每位女士排名次。 这些名次不允许并列。 然后每位男士将向心仪的 对象求婚,经过
最开始的时候每位男士都还没有被任何一位女士拒绝。 求婚环节会经过很多轮进行, 每一轮:
(1) 每位男士向还没有拒绝过自己的女士中选出自己认为最理想的一个,并向她求婚
(2) 每位女士在所有这一轮中向她求婚的男士中选出自己认为最理想的一个,并不答应,也 不拒绝。她把其余向她求婚的男士都婉言拒绝掉。 经过了若干轮求婚之后, 在某一轮, 幸运 的事情发生了:所有的女士都恰好有一个求婚者, 所有的男士都找到一个心仪的对象。 主持 人将继续指出这个配对方式的神奇之处:没有任意的两个配对,比方说男士 A 和女士 a 配 对 , 男士 B 和女士 b 配对, 使得在 A 心目中 b 较 a 更理想, 而且在 b 心目中 A 较 B 更理想 (这 样 A 和 b 就会
主持人在节目之前已经知道男士和女士之间的偏爱情况, 他想预先知道最后的匹配结果是怎 么样的,你能帮帮他吗?
【 要求 】
【 数据输入 】 第一行包括一个数字 N (1<><=1000) 以下="" n*2行,="" 每行有="" n="" 个数字。="" 第="">=1000)><><=n)表示编号为 i="" 的男士对女士们的排序(从最喜欢的到最不喜欢的)="" 。第="">=n)表示编号为><><=n)表示编号为 j="" 的女士对男士们的排序(同样从最喜欢的到最不喜欢的)="">=n)表示编号为>
【 数据输出 】 N 行,每行包括一个数字。第 i 行的数字表示与编号为 i 的男士匹配的女士的 编号。
【 样例输入 】
3
1 2 3
2 3 1
2 1 3
3 2 1
2 3 1
2 3 1
【 样例输出 】
3
2
1
3n+1数链问题
Time limit: 1s Memory limit: 32768K
Total Submit : 471 Accepted Submit : 325
【问题描述】
在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。 然而, 在很多情 况我们并不知道哪一类问题可以解决,那一类问题不可解决。现在我们就有这样一个问题, 问题如下:
1. 输入一个正整数 n ;
2. 把 n 显示出来;
3. 如果 n=1则结束;
4. 如果 n 是奇数则 n 变为 ,否则 n 变为 n/2;
5. 转入第 2步。
例如对于输入的正整数 22,应该有如下数列被显示出来:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
我们推测:对于任意一个正整数,经过以上算法最终会推到 1。尽管这个算法很简单,但我 们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于 1,000,000的正整数都满足以上推断。 对于给定的正整数 n , 我们把显示出来的数的个数定义 为 n 的链长,例如 22的链长为 16。
你的任务是编写一个程序,对于任意一对正整数 i 和 j ,给出 i 、 j 之间的最长链长,当然这 个最长链长是由 i 、 j 之间的其中一个正整数产生的。 我们这里的 i 、 j 之间即包括 i 也包括 j 。
【 要求 】
【 数据输入 】输入文件只有一行,即为正整数 i 和 j , i 和 j 之间以一个空格隔开。
0 < i="" ≤="" j=""><>
【 数据输出 】文件只能有一行,即为 i 、 j 之间的最长链长。
【 样例输入 】
1 10
【 样例输出 】
20
数制转换
Time limit: 1s Memory limit: 32768K
Total Submit : 479 Accepted Submit : 190
【问题描述】
有一种数制的基数是 3,权值可以取 -1,0,1,并分别用符号 -,0,1表示,如这种数制的 101表 示十进制数的 10,即 1*(3^2)+0*(3^1)+1*(3^0)=10,又如这种数制的 -0 表示十进制数的 -3, 即 -1*(3^1)+0*(3^0)=-3。编程要求把给定的有符号整数转换为新数制的数,该数的前面不能 有多余的 0,如 10的新数制表示是 101,则不要输出成 0101。
【 要求 】
【 数据输入 】文件有一行或多行,每行有一个整数 N (-2,147,483,647≤ N ≤ 2,147,483,647) , 整数内不会有其他分隔符。
【 数据输出 】 对输入文件的每一行输出一行, 该行是输入行的整数的新数制表示, 不能有多 余空行,每行之前不能有前导空格。
【 样例输入 】
10
-3
【 样例输出 】
101
-0
数列
Time limit: 1s Memory limit: 32768K
Total Submit : 415 Accepted Submit : 226
【问题描述】
给定一个正整数 k(3≤ k ≤ 15), 把所有 k 的方幂及所有有限个互不相等的 k 的方幂之和构成一 个递增的序列,例如,当 k=3时,这个序列是:1, 3, 4, 9, 10, 12, 13,?
(该序列实际上就是:30, 31, 30+31, 32, 30+32, 31+32, 30+31+32,?)
请你求出这个序列的第 N 项的值(用 10进制数表示) 。
例如,对于 k=3, N=100,正确答案应该是 981。
【 要求 】
【 数据输入 】输入包含多个测试数据。
每个测试数据只有 1行,为 2个正整数,用一个空格隔开:k N
(k 、 N 的含义与上述的问题描述一致,且 3≤ k ≤ 15, 10≤ N ≤ 1000)
【 数据输出 】对于每个测试数据输出一个正整数(在所有的测试数据中,结果均不超过 2.1*109) 。
【 样例输入 】
3 100
3 100
【 样例输出 】
981
981
2^k进制数
Time limit: 1s Memory limit: 32768K
Total Submit : 110 Accepted Submit : 28
【问题描述】
设 r 是个 2k 进制数,并满足以下条件:
(1) r 至少是个 2位的 2k 进制数。
(2)作为 2k 进制数,除最后一位外, r 的每一位严格小于它右边相邻的那一位。
(3)将 r 转换为 2进制数 q 后,则 q 的总位数不超过 w 。
在这里,正整数 k (1≤ k ≤ 9)和 w (k
问:满足上述条件的不同的 r 共有多少个?
我们再从另一角度作些解释:设 S 是长度为 w 的 01字符串 (即字符串 S 由 w 个 “ 0” 或 “ 1” 组成) , S 对应于上述条件(3)中的 q 。将 S 从右起划分为若干个长度为 k 的段,每段对应 一位 2k 进制的数, 如果 S 至少可分成 2段, 则 S 所对应的二进制数又可以转换为上述的 2k 进制数 r 。
例:设 k=3, w=7。则 r 是个八进制数(23=8) 。由于 w=7,长度为 7的 01字符串按 3位一 段分,可分为 3段(即 1, 3, 3,左边第一段只有一个二进制位) ,则满足条件的八进制数 有:2位数:高位为 1:6个(即 12, 13, 14, 15, 16, 17) ,高位为 2:5个,?,高位为 6:1个(即 67) 。共 6+5+? +1=21个。 3位数:高位只能是 1,第 2位为 2:5个(即 123, 124, 125, 126, 127) , 第 2位为 3:4个, ?, 第 2位为 6:1个 (即 167) 。 共 5+4+? +1=15个。 所以,满足要求的 r 共有 36个。
【 要求 】
【 数据输入 】输入包含多个测试数据, 每个测试数据只有 1行, 为两个正整数, 用一个空格 隔开:k W
【 数据输出 】对于每个测试数据,输出一行,是一个正整数,为所求的计算结果,即满足条 件的不同的 r 的个数(用十进制数表示) ,要求最高位不得为 0,各数字之间不得插入数字 以外的其他字符(例如空格、换行符、逗号等) 。
(提示:作为结果的正整数可能很大,但不会超过 200位)
【 样例输入 】
3 7
3 7
【 样例输出 】
36
36
奖学金
Time limit: 1s Memory limit: 32768K
Total Submit : 363 Accepted Submit : 218
【问题描述】
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5名学生发奖学金。 期末,每个学生都有 3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个 同学总分相同, 再按语文成绩从高到低排序, 如果两个同学总分和语文成绩都相同, 那么规 定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的 3门课的成绩计算总分, 然后按上述规则排序, 最后按排名顺序输出前 5名学生的学号和总分。注意,在前 5名同学中,每个人的奖学金都不相同,因此,你必须 严格按上述规则排序。
例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是: 7 279
5 279
这两行数据的含义是:总分最高的两个同学的学号依次是 7号、 5号。这两名同学的总分都 是 279(总分等于输入的语文、数学、英语三科成绩之和) ,但学号为 7的学生语文成绩更 高一些。如果你的前两名的输出数据是:
5 279
7 279
则按输出错误处理,不能得分。
【 要求 】
【 数据输入 】输入包含多组测试数据,每个测试数据有 n+1行。
第 1行为一个正整数 n ,表示该校参加评选的学生人数。
第 2到 n+1行,每行有 3个用空格隔开的数字,每个数字都在 0到 100之间。第 j 行的 3个 数字依次表示学号为 j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序 编号为 1~n(恰好是输入数据的行号减 1) 。
所给的数据都是正确的,不必检验。
【 数据输出 】对于每个测试数据输出 5行,每行是两个用空格隔开的正整数 , 依次表示前 5名学生的学号和总分。两个相邻测试数据间用一个空行隔开。
【 样例输入 】
6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98
8
80 89 89
88 98 78 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98
【 样例输出 】 6 265
4 264
3 258
2 244
1 237
8 265
2 264
6 264
1 258
5 258
纪念品分组
Time limit: 1s Memory limit: 32768K
Total Submit : 92 Accepted Submit : 51
【问题描述】
元旦快到了, 校学生会让乐乐负责新年晚会的纪念品发放工作。 为使得参加晚会的同学所获 得的纪念品价值相对均衡, 他要把购来的纪念品根据价格进行分组, 但每组最多只能包括两 件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。 为了保证在尽量短的时间 内发完所有纪念品, 乐乐希望分组的数目最少。 你的任务是写一个程序, 找出所有分组方案 中分组数最少的一种,输出最少的分组数目。
【 要求 】
【 数据输入 】 输入包含多组测试数据,每个测试数据包含 n+2行:
第 1行包括一个整数 w ,为每组纪念品价格之和的上限。
第 2行为一个整数 n ,表示购来的纪念品的总件数。
第 3~n+2行每行包含一个正整数 pi (5 <= pi="">=><=>=>
1 <= n="">=><= 30000,="" 80="">=><= w="">=><=>=>
【 数据输出 】对每个测试数据,输出一行,包含一个整数,即最少的分组数目。
相邻两个测试数据间用一个空行隔开。
【 样例输入 】
100
9
90
20
20
30
50
60
70
80
90
【 样例输出 】
6
统计数字
Time limit: 1s Memory limit: 32768K
Total Submit : 165 Accepted Submit : 58
【问题描述】
某次科研调查时得到了 n 个自然数,每个数均不超过 1500000000(1.5*10^9) 。已知不相同 的数不超过 10000个, 现在需要统计这些自然数各自出现的次数, 并按照自然数从小到大的 顺序输出统计结果。
【 要求 】
【 数据输入 】包含多个测试数据,每个包含 n+1行:
第 1行是整数 n ,表示自然数的个数。
第 2~n+1行每行一个自然数。
1<><=200000,每个数均不超过 1="" 500="" 000="">=200000,每个数均不超过>
【 数据输出 】对每个测试数据输出 m 行(m 为 n 个自然数中不相同数的个数) ,按照自然数 从小到大的顺序输出。 每行输出两个整数, 分别是自然数和该数出现的次数, 其间用一个空 格隔开。
相邻两个测试数据间用一个空行隔开。
【 样例输入 】
8
2
4
2
4
5
100
2
100
【 样例输出 】
2 3
4 2
5 1
100 2
矩阵取数游戏
Time limit: 1s Memory limit: 32768K
Total Submit : 150 Accepted Submit : 27
【问题描述】
帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n*m的矩阵,矩阵中的每个元素 aij 均为非负整数。游戏规则如下:
1. 每次取数时须从每行各取走一个元素,共 n 个。 m 次后取完矩阵所有元素;
2. 每次取走的各个元素只能是该元素所在行的行首或行尾;
3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元 素值 *2i,其中 i 表示第 i 次取数(从 1开始编号) ;
4. 游戏结束总得分为 m 次取数得分之和。
帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。
【 要求 】
【 数据输入 】输入有多个测试数据,每个包括 n+1行:
第 1行为两个用空格隔开的整数 n 和 m 。
第 2~n+1行为 n*m矩阵,其中每行有 m 个用单个空格隔开的非负整数。
1<=n,>=n,><=80,>=80,><><>
【 数据输出 】对每个数据,输出一行,为一个整数,即输入矩阵取数后的最大得分。相邻两 个输出间用一个空行隔开。
【 样例输入 】
1 4
4 5 0 5
2 10
96 56 54 46 86 12 23 88 80 43
16 95 18 29 30 53 88 83 64 67
【 样例输出 】
122
316994
四塔问题
【问题描述】
“汉诺塔” ,是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有 4根柱子, 而不是 3根, 那么至少需要移动盘子多少次, 才能把所有的盘子从第 1根柱子移动 到第 4根柱子上呢? 为了编程方便,您只需要输出这个结果 mod 10000的值。
【 要求 】
【 数据输入 】该题含有多组测试数据,每组一个正整数 n 。 (0<><>
【 数据输出 】 一个正整数, 表示把 n 个盘子从第 1根柱子移动到第 4根柱子需要的最少移动 次数 mod 10000的值。
【 样例输入 】
15
【 数据输出 】
129
平方数
【问题描述】
给出包含 M 个数字的列表,和列表中所有数字的所有质因数。求出最长的子列表,使得子 列表中所有数字的乘积是一个完全平方数。
【 要求 】
【 数据输入 】输入文件包含多组测试数据。第一行包含两个整数 N , M ( 1 <= n="">=><= 30="" ,="" 1="">=><= m="">=><= 30000="" ).="" n="" 是质因数的个数。接下来一行有="" n="" 个整数,给出所有的质因数。然后一行="" 包含="" m="" 个整数,给出列表。="" 输入文件结束于="" n="M" =="">=>
【 数据输出 】对于每组数据,输出最长子列表的两个位置坐标 l r。 l 是该子列表在列表中的 起始位置, r 是结束位置。如果多种情况都满足子列表长度最大,输出 l 最小的一个。如果 不存在这样的子列表输出“ None ” 。
【 样例输入 】
3 4
2 3 5
4 9 25 6
3 4
2 3 5
6 6 3 3
0 0
【 样例输出 】
1 3
1 4
【问题描述】
给定平面上三个圆的位置, 请你用钢笔在纸上画出它们, 作图的起点自定。 拿起钢笔的时候, 你不能作图。 在画完一个完整的圆后, 才可以接着画另一个, 决不可半途中止去画另一个圆 . 已知把钢笔移动一个单位距离需要一个单位时间, 拿起它则不需时间。 请计算画完这三个圆 所需的最小时间。
【 要求 】
【 数据输入 】第一行为一个正整数 T(T<>
接下来的 T 行, 每一行都有 9个实数 x1,y1,r1,x2,y2,r2,x3,y3,r3, 分别指第 i(i=1,2,3)个圆的圆 心坐标和半径长。其中, -10000<><=10000,>=10000,><><>
【 数据输出 】对于每一种测试情况,输出相应的最小作图时间。
【 样例输入 】
2
0 0 0.5 -2 0 0.5 2 0 0.5
0 0 1 -2 2 1 2 2 1
【 样例输出 】
12.425
21.322
埃及分数
【问题描述】
在古埃及,人们使用单位分数的和 (形如 1/a的 , a是自然数 ) 表示一切有理数。
如:2/3=1/2+1/6,但不允许 2/3=1/3+1/3,因为加数中有相同的。
对于一个分数 a/b,表示方法有很多种,但是哪种最好呢?
首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。
如:
19/45=1/3 + 1/12 + 1/180
19/45=1/3 + 1/15 + 1/45
19/45=1/3 + 1/18 + 1/30,
19/45=1/4 + 1/6 + 1/180
19/45=1/5 + 1/6 + 1/18.
最好的是最后一种,因为 1/18比 1/180,1/45,1/30,1/180都大。
给出 a,b(0〈 a 〈 b 〈 1000), 编程计算最好的表达方式。
【 要求 】
【 数据输入 】 第一行 :N 表示有 N 组测试数据, 每组测试数据为一行包含 a,b(0〈 a 〈 b 〈 1000) 。 【 数据输出 】每组测试数据若干个数,自小到大排列,依次是单位分数的分母。
【 样例输入 】
1
19 45
【 样例输出 】
5 6 18
植树活动
Time Limit:1000MS Memory Limit:65536K
Total Submit:589 Accepted:342
【问题描述】 春暖花开, 万物复苏, 这正是植物生长的好季节。 珠海校区举行了一次题为 “迎 百年校庆, 添三分绿色” 的植树活动。这次植树活动的目的除了美化我们的校园, 进一步增 强同学们的环保意识以外, 还在于迎接即将到来的百年校庆, 张江河副院长认为这次活动意 义重大, 并不亚于其他大型的植树活动。 他希望同学们要坚持照顾好自己所种的树, 为它们 浇水捉虫,让它们茁壮成长。 师生共同植树,打成一片。在这里我们看到的是热情,是团 队合作精神, 还有同学们为庆祝百年校庆的真诚的心! 经过将近一个小时的努力, 各单位基 本上都把树种好。看到自己亲手种的树, 同学们都非常兴奋, 纷纷拍照留念,记下这个难忘 的时刻!同学们感叹说:“这次活动很有意义啊! ” ,有的同学则希望能留下一个见证,让他 们以后回来母校,可以看到自己的班集体种的树,会觉得很有意义。
这次植树活动有 n 个部门参加,树种有米兰、玉兰,有桂花、榕树,还有大皇椰等。每个部 门分别种了 m 个树种, 每个树种分别种了 k1,k2,k3, ? ,km-1,km 棵, 现在有一个简单的任务, 就请你帮忙计算一下每个部门分别种了多少棵树,全院一共种了多少棵树。
【 要求 】
【 数据输入 】所有的数据都是从键盘输入,其数据格式是:第一行是参与植树的部门数 n , 后面跟着的每二行是一个部门的数据, 在每一个部门的数据中, 第一行是该部门植树的树种 数 m ,第二行是 m 个树种所种的棵数 k1,k2,k3, ? ,km-1,km 。
【 数据输出 】输出结果为按顺序输出每个部门所种的树棵数,及全院共种树的棵数。
【 样例输入 】
2
3
4 5 2
4
6 7 3 1
【 样例输出 】
11
17
28
有趣的排列
Time Limit:1000MS Memory Limit:65536K
Total Submit:27 Accepted:19
【问题描述】
大家知道,给出正整数 n ,则 1到 n 这 n 个数可以构成 n !种排列,把这些排列按照从小到 大的顺序(字典顺序)列出,如 n=3时,列出 1 2 3, 1 3 2, 2 1 3, 2 3 1, 3 1 2, 3 2 1六个 排列。
任务描述:给出某个排列,求出这个排列的下 k 个排列,如果遇到最后一个排列,则下 1排列为第 1个排列,即排列 1 2 3? n 。
比如:n = 3, k=2 给出排列 2 3 1,则它的下 1个排列为 3 1 2,下 2个排列为 3 2 1,因此答 案为 3 2 1。
【 要求 】
【 数据输入 】第一行是一个正整数 m ,表示测试数据的个数,下面是 m 组测试数据,每组 测试数据第一行是 2个正整数 n( 1 <= n="">=>< 1024="" )和=""><><=64), 第二行有="" n="" 个正整数,="" 是="" 1,="" 2="" ?="" n="">=64),>
【 数据输出 】对于每组输入数据,输出一行, n 个数,中间用空格隔开,表示输入排列的下 k 个排列。
【 样例输入 】
3
3 1
2 3 1
3 1
3 2 1
10 2
1 2 3 4 5 6 7 8 9 10
【 样例输出 】
3 1 2
1 2 3
1 2 3 4 5 6 7 9 8 10
三角形面积
Time Limit:1000MS Memory Limit:65536K
Total Submit:1195 Accepted:350
【问题描述】
给出三角形的三个边长为 a , b , c ,根据海伦公式来计算三角形的面积:
s = (a+b+c)/2;
area = sqrt(s*(s-a)*(s-b)*(s-c));
【 要求 】
【 数据输入 】测试的数据有任意多组,每一组为一行。
每一行为三角形的三个边长为 a , b , c ;
【 数据输出 】输出每一个三角形的面积,两位小数。如果不是一个三角形, 则输出错误提示 信息:“ Input error!”
【 样例输入 】
3 4 5
6 8 10
1 2 3
【 样例输出 】
6. 00
24. 00
Input error!
timelimit:5 seconds
memlimit:32768 K
Prev |Next
【问题描述】
两个 PACMAN 吃豆豆。一开始的时候, PACMAN 都在坐标原点的左下方,豆豆都在右上 方。 PACMAN 走到豆豆处就会吃掉它。 PACMAN 行走的路线很奇怪,只能向右走或者向 上走, 他们行走的路线不可以相交。 请你帮这两个 PACMAN 计算一下, 他们俩加起来最多 能吃掉多少豆豆。
【 要求 】
【 数据输入 】输入包括多组数据每组输入数据第一行为 N (1≤ N ≤ 2000) ,表示豆豆的数 目。接下来 N 行,每行一对正整数 Xi 、 Yi (不超过 10^8) ,表示第 i 个豆豆的坐标。任意两 个豆豆的坐标都不会重合。
【 数据输入 】两个 PACMAN 加起啻最多能吃掉的豆豆数量。
每组输出后跟一个空行
【 样例输入 】
8
8 1
1 5
5 7
2 2
7 8
4 6
3 3
6 4
【 样例输出 】
7
timelimit:30 seconds
memlimit:32768 K
Prev |Next
【 问题描述 】
一个序列 {Ai, i=0,1,2,? ,3N}由 3N+1 项组成,每一项要么为 1,要么为 -2。
定义部分和 SK=A0+A1+? +AK,求所有满足性质 P 的序列的数目。性质 P 为:S3N=1 且 对于所有的 K=0,1,2,? ,3N-1,3N ,有 SK>0(即所有项的和为1,且所有部分和为正) 。 例如 N=2 的时候,共有 3 组这样的序列:
1, 1, 1, -2, 1, 1, -2
1, 1, 1, 1, -2, 1, -2
1, 1, 1, 1, 1, -2, -2
【 要求 】
【 数据输入 】第一行输入 N(N≤ 1000) 。
【 数据输出 】满足 P 性质的序列数目
【 样例输入 】
2
【 样例输出 】
3
timelimit:1 seconds
memlimit:32768 K
Prev |Next
【问题描述】 fzk 非常喜欢养宠物,比如他现在就养了 2头奶牛, 3只小熊, 4个猩猩, 5头 大象, 还有一个 daizi 。 fzk 把他的宠物关在一些笼子里, 例如, fzk 当前的分配是:笼子 1:奶牛, daizi ;笼子 2:奶牛;笼子 3:猩猩,大象;笼子 4:小熊,猩猩这样总共需要 4个笼子。为了节省资金, fzk 想用尽可能少的笼子来装下所有宠物。他的办法是在当前的分 配下, 合并一些笼子。假设每个笼子都足够大,可以装下任意多的宠物,而两个笼子如果装 有相同的一种或多种宠物,就可以合并。现在给出 fzk 当前的分配,你能否帮助 fzk 算出按 照他的方法合并后,总共只需要几个笼子 ? 比如对于上面的分配,可以合并为:笼子 1:奶牛, daizi ;笼子 2:猩猩,小熊,大象总共需要 2个笼子。
【 要求 】
【 数据输入 】首先一个整数 t 表示测试数据组数(1=<><=10) 。对每组数据,第一行是一个="" 整数="" k="" (k="">0) ,表示当前分配下总共的笼子数。在接下来的 k 行中,每行描述一个笼子中关 的宠物。其中第 i 行的结构是:Ni name1 name2 name3 ? nameNi 。其中 Ni (Ni>0)是该笼 子中的宠物的种类数, name1, ? ,nameNi 是这些宠物的
种类名称 (他们互不相同) 。 所有的 name 都是由小写字母组成的字符串, 长度不超过 10位; 所有的 Ni 之和不超过 10000,不同的宠物种类数不超过 1000。
【 数据输出 】对每组测试数据,输出一个整数,表示笼子合并之后 fzk 可以使用的最少的笼 子数。
【 样例输入 】
1
4
2 nainiu daizi
1 nainiu
2 xingxing daxiang
2 xiaoxiong xingxing
【 样例输出 】
2
timelimit:1 seconds
memlimit:32768 K
Prev |Next
【问题描述】
在一个坐标平面上, 给一个 n 个点的集合, 能不能画出一个简单多边形 (除相邻边外其他任 意两条边没有公共点) 。要求这个多边形的顶点集合就是给定的点集,而且多边形的边必须 与 x 轴或 y 轴平行 . 更进一步 , 要求多边形相邻的边不平行 , 也就是说 , 多边形的边是一条横线段 , 接着一条竖线段 , 再接着一条横线段 ....
【 要求 】
【 数据输入 】输入包括多组数据 .
输入数据的第一行包括一个整数 t, 表示有 t 组输入数据, t<>
每组输入数据的第一行为一个整数 n,(4 ≤ n ≤ 100000)
接下来的 n 行每行描述一个点的坐标 , 包括两个整数 x y,( |x|,|y| ≤ 1000 )
【 数据输出 】
每个输入数据输出一行
如果可以画出要求的多边形 , 输出多边形的周长 . 如果存在多个这样的多边形,输出周长最小 的。
如果不存在这样的多边形 , 输出 -1
【 样例输入 】
1
8
1 2
1 0
2 1
2 2
3 2
3 1
4 0
4 2
【 样例输出 】
12
H 数
timelimit:1 seconds
memlimit:32768 K
Prev |Next
【问题描述】
让我们来做做 David Hilbert的一个练习题 .
定义 H 数为 4的正整数倍加 1, 比如 : 1, 5, 9, 13, 17, 21, 25... 都是 H 数 . 可以证明两个 H 数相 乘结果还是 H 数 . 类似于整数 , 我们也可以把 H 数分为 1, H 素数和 H 合数 . 一个 H 数为 H 素 数 , 当且仅当 , 它除了 1和自己之外 , 没有其他的 H 数整除它 . 除了 1和 H 素数外 , 其他的 H 数都 是 H 合数 . 比如 9是 H 素数 , 因为除了 1和 9之外没有其他的 H 数整除 9; 17和 21也是 H 素 数 ; 45是 H 合数, 45=5×9, 25也是 H 合数 , 因为 25=5×5.
你的任务是计算 H 半素数的个数 . 一个 H 数是 H 半素数 , 当且仅当 , 它能分解成两个 H 素数 的乘积 .
这两个 H 素数可以是同一个数 . 比如 25是 H 半素数 ,25=5×5。 45也是 H 半素数 , 45 = 5×9, 而 125不是 H 半
素数 ,125 = 5 ×5 ×5, 它可以分解成 3个 H 素数的乘积 .
给你一个 H 数 n, 要求你输出有多少个不大于 n 的 H 半素数 .
【 要求 】
【 数据输入 】输入包括多组数据 , 每组数据输出一行 , 包括一个整数 n,(n ≤ 1,000,001 ) 最后一行为一个 0, 表示输入结束 .
【 数据输出 】 每个输入数据输出一行 , 先输出 n, 然后输出小于等于 n 的 H 数中有几个是 H 半 素数 , 这两个数用一个空格隔开
【 样例输入 】
21
85
789
【 样例输出 】
21 0
85 5
789 62
数列找数
Time Limit:1000MS Memory Limit:65536K
Total Submit:635 Accepted:263
【问题描述】
在一个数组 A(N)各下标变量中存储 N 个互不相等的数, 键盘输入正整数 M(M≤ N) , 要求打 印出数组中第 M 大的下标变量的值。
例如:数组 A (10)的数据为:
A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), A(10)
16, 57, 20, 19, 38, 41, 6, 13, 25, 32
M=3时的运行结果为:A(5)=38 (即第 3大的数是 A(5)=38)
【 要求 】
【 数据输入 】 第一行为测试的数据的组数 k ,说明共有 K 组数据, 每一组有两行。每组中第 一行为 N , M, 第二行为 N 个下标变量的值。
【 数据输出 】输出每一组数据中符合要求的下标值和下标变量值。
【 样例输入 】
2
5 1
6 8 3 4 5
3 2
1 2 3
【 样例输出 】
A(2)=8
A(2)=2
Time Limit:1000MS Memory Limit:65536K
Total Submit:136 Accepted:94
【问题描述】
把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的 分法?(用 K 表示) 5, 1, 1和 1, 5, 1 是同一种分法。
【 要求 】
【 数据输入 】 第一行是测试数据的数目 t (0 <= t="">=><= 20)="" 。="" 以下每行均包含二个整数="" m="" 和="" n="" ,="" 以空格分开。="">=><=m,>=m,><>
【 数据输出 】对输入的每组数据 M 和 N ,用一行输出相应的 K 。
【 样例输入 】
1
7 3
【 样例输出 】
8
Time Limit:1000MS Memory Limit:65536K
Total Submit:126 Accepted:65
【问题描述】 网上流传一句话 :
(1).密码长度大于等于 8,且不要超过 16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1. 大写字母:A,B,C...Z;
2. 小写字母:a,b,c...z;
3. 数字:0,1,2...9;
4. 特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
【 要求 】
【 数据输入 】输入数据有多组,对于每一组输入第一行包含一个数 M ,接下有 M 行,每行 一个密码(长度最大可能为 50) ,密码仅包括上面的四类字符输入 0退出。
【 数据输出 】对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出 YES , 否则输出 NO 。
【 样例输入 】
3
a1b2c3d4
Linle@ACM
^~^@^@!%
【 数据输出 】
NO
YES
NO
范文二:比赛评分系统C++程序设计
《 C++程序设计》项目
项目设计题目(比赛评分系统)
学号:姓名 自评成绩:成绩:
1.选题意义、依据
学校经常举行十佳歌手等比赛,没有专门的打分系统,都是 评委给出分数后一块公布每位选手的成绩,这样比较麻烦,而 且没有体现出公平性,为了体现公平公正,且满足观众急于知 道选手得分情况的心理,于是做了这个项目。
2.系统功能设计与分析(功能模块说明)
开头定义 M (选手数) , N (评委数) ,针对比赛的选手数、评 委数,可以相应的调整符号常量的值,达到了“一改全改”的 效果。要求如下:
(1)去掉最高分最低分,要保证评委人数不少于 3,参赛选手 人数不少于 2
(2)成绩在 0--10分之间,超出范围则有错误提醒
循环调用函数 float CountAthleteScore(int , float ave, int n, float s[], int m), 每次实现以下功能:输入每位评委给定该位选手的得分, 并将所得的 n 个得分中,去掉一个最高分, 去掉一个最低分,然 后平均为该选手的最后得分。并将每位选手的成绩一次存入数 组 a [M], b[M]中。
调用函数 void Sort(float a[], int n),对参赛选手成绩进行排序, 由高到低输出。
调用函数 void Print(float a[], int n,int bh[]),输出冠军,亚军,季 军的成绩和编号,并对成绩相等的情况做了相关处理。
3. 涉及的主要知识点说明
1、数组的使用
2、冒泡排序
3、函数调用
4、输出格式
5、选择控制语句的使用
4. 创新性说明
将平均值存入数组 a []中, 对它排序后, 分值对应的地址发生改变 , 输出编号与成绩不对应。 将平均值存入两个数组 a[], b[]中, 对数组 a[]中的值排序, 分值依次与数组 b[]中的值比较, 找到相等的便输出 对应的编号。这样便解决了编号输出问题。
5. 源代码
# include # include # define N 20 //评委的人数最多为 20 # define M 50 //参赛选手的人数最多为 50 using namespace std; float CountAthleteScore(int , float ave, int n, float s[], int m); void Sort(float a[], int n); void Print(float a[], int n,int bh[]); float b[M]; int bh[M]; int main() { int i=0,n,m,r=0; float s[N],a[M],ave=0.0,sum=0.0; cout cout cin>>n; cout cin>>m; cout<> for(i=0;i<> {cout cout cin>>bh[i]; a[r++]=CountAthleteScore(bh[i], ave, n,s, m); } cout<> cout cout<> Sort(a, m); Print( a, n,bh); return 0; } float CountAthleteScore(int , float ave, int n, float s[], int m) { int j,k,r=0; static int w=0; float t,sum=0.0; ave=0.0; cout for(k=0;k { cout<> cout cin>>s[k]; if((s[k]>10)||(s[k]<> { cout k--; } } for(k=0;k { for(j=k+1;j<> if(s[k]<> { t=s[k]; s[k]=s[j]; s[j]=t; } } cout cout<> cout<> cout for(k=0;k<> { cout<> sum=sum+s[k+1]; } cout<> ave= sum/float(n-2); b[w++]=ave; cout return ave; cout void Sort(float a[], int m) { int j; int r; float t; for(r=0;r for(j=0;j<> if(a[j] { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } cout cout cout<> cout void Print(float a[], int m,int bh[]) { int i; if((a[0]!=a[1])&&a[1]!=a[2]) { if(m>2){ cout<> cout for(i=0;i<> { if(b[i]==a[0]) break; } cout<><> cout<> cout for(i=0;i<> { if(b[i]==a[1]) break; } cout<><> cout<> cout for(i=0;i<> { if(b[i]==a[2]) break; } cout<><> cout<> } else{ cout<> cout for(i=0;i<> { if(b[i]==a[0]) break; } cout<><> cout<> for(i=0;i<> { if(b[i]==a[1]) break; } cout<><> cout<> } else if((a[0]==a[1])&&(a[1]!=a[2])) { cout if(m>2) { cout for(i=0;i<> { if(b[i]==a[0]) cout<> } cout cout for(i=0;i<> { if(b[i]==a[2]) break; } cout<> cout else { cout for(i=0;i<> { if(b[i]==a[0]) break; } cout<> cout } } else if((a[0]!=a[1])&&(a[1]==a[2])) { if(m>2) { cout { if(b[i]==a[0]) break; } cout cout cout for(i=0;i<> { if(b[i]==a[1]) cout<> } cout } else { for(i=0;i<> { if(b[i]==a[0]) cout for(i=0;i<> { if(b[i]==a[1]) cout cout } } else if((a[0]==a[1])&&(a[1]==a[2])) { if(m>2) { cout for(i=0;i<> { if(b[i]==a[0]) cout<> } cout } else { cout for(i=0;i<> { if(b[i]==a[0]) cout<> } } } } 6. 运行结果与分析 执行程序后显示界面如下: 输入评委个数和参赛选手个数: 输入第一位选手的编号及各位评委的打分情况,得到编号为 11的选手的平均成绩: 依次输入其余五位选手的成绩后: 得到最终输出格式为: 输入数值超出 0--10,则出现错误提示: 几位选手成绩相同时的处理: 控江杯初中段VB程序设计比赛大纲 软件说明: 比赛环境采用Visual Basic 6.0+MSDN。 第一部分:计算机基础知识(略,今年暂时无比赛内容) 第二部分:程序设计基础知识 一、控件和界面要求: 1、熟练掌握Visual Basic集成开发环境,包括文件的存取。 2、熟练掌握基本控件的属性、方法、响应事件的使用。 文本控件:(1)标签;(2)文本框; 图形控件:(1)图片框,图像框;(2)图形文件的装入、截取等;(3)直线和 形状。 按钮控件; 选择控件:复选框和单选按钮; 选择控件:列表框和组合框; :垂直滚动条、水平滚动条; 滚动条 计时器; 框架; (把窗体也看成一个基本控件); 窗体 文件操作控件:驱动器列表、文件夹列表、文件列表; 焦点与Tab顺序。 基本控件的键盘、鼠标的响应事件的使用; 3、熟练掌握基本函数(主要包括数学函数、字符串函数、类型转换函数、日期 函数); 4、熟练掌握随机数函数的使用; 5、熟练掌握InputBox函数、MsgBox函数和MsgBox语句的使用; 6、熟练掌握内置常量,主要指键盘按键值和msgbox,inputbox函数的按钮值; 7、熟练掌握读取、存储文本文件的操作; 8、熟练掌握控件数组; 9、熟练掌握多窗口的调用; 10、熟练掌握剪贴板的使用; 11、熟练掌握使用MSDN; 二、程序语言结构要求: 1、熟练掌握选择结构的语法和应用:(1)单行结构条件语句;(2)块结构条件语 句。 2、熟练掌握多分支结构的语法和应用; 3、熟练掌握For循环控制结构的语法和应用; 4、熟练掌握Do循环控制结构; 5、熟练掌握多重循环(只到二重嵌套循环)的语法和应用; 6、了解当型循环、直到型循环控制结构的区别和应用; 三、算法和数据结构要求: 1、熟练掌握基本数据类型的定义和使用; 2、数量掌握数组的定义和使用(主要指静态一维数组); 3、熟练掌握变量、常量的定义和使用; 4、熟练掌握基本运算符和表达式的使用,包括判断表达式的执行顺序; 5、熟练掌握数学解析算法; 6、熟练掌握枚举算法; 7、熟练掌握递推算法;(今年暂不做要求); 8、熟练掌握排序算法;(今年暂不做要求); 四、试题形式: 学校初赛(暂时不命题) 区级决赛(5题,上机完成,1.5小时) 华侨大学数学科学学院2010年科技节 程序设计比赛策划书 一、活动背景: 当今世界国际化、信息化、知识化等特征日益明显,网络的发展进一步将每个社会成员连为一体。为了更好地生存和发展,大学生必须具备广博的计算机知识和卓越的科技创新能力等敏锐的嗅觉和灵活的机制,顺应形势的变化,不断对自身进行调整、完善,以此来保持和增进自我的竞争优势,使其成为组织独有的特性,从而永葆青春,基业长青。正值华侨大学第五届科技节活动在即,特在全院范围内举办程序设计比赛。 二、活动目的: 培养广大同学学习计算机的兴趣,提高学生课外科技活动的能力,培养学生的软件开发和创新意识,发掘人才,提高计算机软件应用和研发水平,为爱好计算机软件编程的同学提供一个交流与学习的平台。 三、组织单位: 主办单位:华侨大学数学科学学院 承办单位:数学科学学院团委科技部 四、参赛对象: 数学科学学院各年级学生 五、大赛宗旨:走科技先锋,弘扬“IT”精神~ 六、大赛口号:“编E”个未来,“程E”翻事业! 七、比赛时间与地点: 比赛时间:2010年04月18日9:00——12:00 活动地点:数学科学学院二楼机房 (如有改变,请留意学院的通知)。 八、参赛形式: 以个人名义报名参赛,在规定时间内完成比赛所指定的题目,交由评审组评 定。 九、比赛报名工作 报名时间:2010年03月30日——04月7日 报名方式:以现场表格或电子邮件方式在规定时间内报名 1 华侨大学数学科学学院2010年科技节 报名邮箱:blackleelee@gmail.com 注:报名信息如下: xx级xx专业 学号:xxx 姓名:xxx 联系方式:xxxxxxxxxxx 十、比赛形式: 主要面向对程序设计比较感兴趣的同学。形式为在规定的时间内完成比赛规定的题目,大赛评审委员会会通过评定决出一、二、三等奖。 十一、 竞赛规则: 1、要求参赛者具备良好的编程风格,在程序中加入适当的注释。 2、决赛入场时可携带计算机类工具书但不能携带任何可用计算机处理的软 件或数据(不允许携带移动存储设备或计算器)。比赛期间严禁选手之间进行 交流。 3、参赛者应尊重自己的劳动成果,严禁将自己的作品借给他人抄袭,严禁 为他人抄袭行为提供便利,严禁抄袭他人作品。如有发现违反上述规定 的行为,组委会有权取消其参赛资格,并予以通报。 4、改卷过程中如果发现有雷同试卷,组委会将取消所有雷同试卷的参赛资 格。 5、比赛期间严禁向场外求助。 6、在比赛过程中,如有被组委会认为是妨碍竞赛顺利进行行为,组委会有 权取消其参赛资格。 十二、比赛流程: 1、提前15分钟入场(比赛开始10分钟后任何人不得以任何理由申请入场) 2、赛前10分钟调试机器 3、赛前5分钟评委老师传题(6题) 4、参赛者制作程序并制作附带说明文档 5、参赛者试题完成并上传后离场由现场工作人员记录离场时间 6.终场时间到后停止答题,统一将试题上传 7、评委老师演示参赛者程序综合评分 十三、评分规则: 2 华侨大学数学科学学院2010年科技节 本着公开、公平、公正的原则进行。邀请具有丰富编程经验的老师组成 评审委员会,对参赛作品进行评定。大赛评委将根据参赛作品正确完成的题 数与时间比例对参赛作品综合评分,从而决出最后结果。 十四、奖项设置: 一等奖1名(奖金200元及证书) 二等奖2名(奖金150元及证书) 三等奖3名(奖金100元及证书) 鼓励奖3名(证书) 十五、注意事项: 1、本次比赛的所有参赛作品不涉及作者著作权方面的问题。 2、本次活动安排如有变动,大赛组委会将及时进行公布。 负责人:李天宇 联系方式:15260829116 宋家庚 15260829121 时肖肖 15960737802 华侨大学数学科学学院团委科技部 2010年03月11日 3 2014年青岛市程序设计竞赛试题(小学组) (比赛时间 90分钟 , 试题满分 400分 , 内存限制 128M ,时间限制:1s ) 说明:1、必须以题目中规定的文件名进行保存,并在技术人员帮助下传到指定文件夹中。 2. 使用竞赛规定的文件格式输入、输出。 (1)对于使用 Pascal 语言的选手,请参照以下格式使用文件输入输出: begin assign(input,'输入文件名 '); assign(output,'输出文件名 '); reset(input);rewrite(output); ....... close(input);close(output); end. (2)对于 C 或 C++选手,如果尚未掌握文件输入输出,请参考以下我们提供的一种方法进行文件输入输 出。在主函数即 main()的开始部分加入以下代码 : freopen( freopen( 程序结束时无须像 Pascal 选手一样,关闭文件,系统将自动关闭读写的文件。 对于 C 选手,请调用头文件 stdio.h 对于 C++选手,请调用头文件 iostream 1. 整数处理 (zhengshu.pas/c/cpp) 【问题描述】 电脑老师让小明编程做一道题:输入一个正整数 A ,如果 A 的个位数字是 5, 则统计 A 能被 5整除多少次?否则,统计 A 当中含有多少个“ 0”?你能做吗? 【输入】 一行 : 一个正整数 A 。 【输出】 一行 : 一个整数,小明所要求的数。 【数据范围限制】 对于 100%的数据,满足 A<> 2. 乘车费用 (cost.pas/c/cpp) 【问题描述】星期天上午小明乘出租车去本市的外婆家。出租车计价方案为:2公里以内起步价 是 6元,超过 2公里之后按 1.8元 /公里计价,超过 10公里之后在 1.8元 /公里的基础上加价 50%,另 外,停车等候则按时间计费:1元 /3分钟(注:不满 3分钟不计费) 。已知:小明到外婆家路程为 N 公里,中间停车等候时间总共 M 分钟,请计算小明到外婆家的出租车费用是多少元 ? 【输入】 一行:用空格隔开的两个正整数 N 和 M 。 【输出】 一行:一个实数(表示车费,小数点后保留 1位) 。 【输入输出样例】 【数据范围限制】 对于 100%的数据, N<=100,>=100,><> 【提示】注意数据类型及输出时小数保留的位数。 3. 成绩排名 (sort.pas/c/cpp) 【问题描述】我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。例如有四名选手的成 绩分别为 50、 80、 50、 30分,则 80分的选手为第一名, 50分的两名选手均为第二名, 30分的选手 为第四名。请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面) 。 【输入】 第一行:一个整数 n ,表示参赛的选手数, 第二行:n 个整数,表示每位选手的成绩, 第三行:一个整数,表示要查询名次的选手的成绩。 【输出】 一行:一个整数,表示该选手的名次。 【数据范围限制】 对于 30%的数据, N<> 对于 60%的数据, N<> 对于 100%的数据, N<> 对于 100%的数据,每名选手的分数范围为 0-100。 4. 摘红苹果 (apple.pas/c/cpp) 【问题描述】 国庆节学校开展游乐活动,五(二)班有一个摘苹果的游戏:用长短不一的绳子挂着高 低不一的 N 个苹果,参加游戏有 M 个小朋友,每人最多可以摘两个苹果,而且只许伸手摘,不允许借助 其它工具,也不能跳着摘。规定,小朋友伸手能达到的高度大于或等于苹果的高度,就认为能摘到苹果。 由于小朋友的身高参差不齐, 怎样才能使他们摘的苹果总数最多呢?请你计算这 M 个小朋友们最多能摘到 多少个苹果? 【输入】 第一行:两个正整数 N 和 M。 第二行: N个整数(以空格相隔) ,分别表示每个苹果的高度。 第三行: M个整数(以空格相隔) ,分别表示每个小朋友伸手能达到的高度。 【输出】 一个整数:一个整数,表示最多能摘到的苹果数。范文三:控江杯初中VB程序设计比赛大纲
范文四:程序设计比赛策划书_程序设计比赛计划书_策划书书写
范文五:程序设计比赛小学组试题2014