ACM集训队选拔赛第一场题目

合集下载

2013ACM月赛第I场正赛题目

2013ACM月赛第I场正赛题目

北京理工大学珠海学院A-G共7题注意:题目难度与题号无关A老吴的棋盘游戏Time Limit: 1s Memory Limit: 256MProblem Description集训的结束带来的就是新学期的到来。

开学已久,ACMer们许久没A题也有些无聊了,不过最近老吴发现了一个游戏可以用来消磨时间。

其实就是一个棋盘游戏,它的规则是这样的,全场只有一颗棋子,初始坐标在(1,1)点,下一步只能往(1,2)(0,1)(2,1)三个方向移动。

后面该棋子也以这个规则移动。

对家提问恰好走N步且不经过已走过的点有多少种走法,而你只需回答有M种走法就行了。

大胆地去猜测具体规则吧,骚年。

Input有多组测试数据。

每行都有一个整数N(N<=20),当N小于或等于0时结束全部输入。

Output输出占一行,为对家提问的结果M。

Sample Input13Sample Output317AuthorBy-廖瑞华B老陈逛校园Time Limit: 1s Memory Limit: 256MProblem Description老吴的棋盘游戏好不好玩?不过瘾的话来做一个有意义的事吧,荔枝园去过么?没去过不要紧,我们的活动不在那里进行,在全校范围内,假设学校有N个地点,M条道路。

是这样的,有一天老陈出去校门口送pc坐车回家,回来时忽然心血来潮就把学校走了一圈。

他发现其实我们学校真的很大,只是我们都没去走过而已。

这样吧,你们去走遍北理珠校园?走归走,从2饭到图书馆有很多路径可以选择,你们应该寻找捷径。

走过后最好就给老陈画一张地图啦。

不过只需要给老陈路径的数据就可以了,绘制就由他来做吧。

大胆地去开发校园吧,别留遗憾。

Input有多组测试数据。

第一行都有2个整数N M(1<=N<=1000,0<=M<=10000),接下来有M行a b c,(1<=a,b<=N,0<=c<=10000),表示a与b之间有一条长度为c的道路。

ACM面试题-美国计算机程序选拔赛

ACM面试题-美国计算机程序选拔赛

【试题一】青蛙相遇问题【题目描述】两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。

它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。

可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。

不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。

但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。

为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。

我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。

设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。

青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。

纬度线总长L米。

现在要你求出它们跳了几次以后才会碰面。

Input 输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。

Output 输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible"示例Sample Input1 2 3 4 5Sample Output4题目要求;1.程序应该可以运行:通过控制台输入数据,输出数据通过printf给出;2.程序结构明了逻辑缜密、清晰,符合编码规范;3.程序功能正确;程序要注意效率;并且要求根据输入及时确认是否能够相遇,如果不能相遇请及早退出程序;程序思路:说明:可以将青蛙的路线看坐是一个圆判断其坐标如果下一次跳动后将饶过原点则把坐标转换这样无论青蛙在哪个位置上都用坐标来表示它如果两只青蛙坐标相等则相遇如果两只青蛙开始的坐标不一样但是速度一样那么将永远不能相遇【试题二】田忌赛马此题就是经典的田忌赛马,田忌和他的对手分别有n匹马,分别给出田忌的马的速度和对手的马的速度。

河南科技大学ACM选拔赛试题

河南科技大学ACM选拔赛试题

河南科技大学ACM-ICPC选拔赛试题承办:电子信息工程学院地点:开园校5区-511机房时间:2011年5月18日-比赛规则考试时间:3小时2:30~5:30)题目:共4题评分:以正确答题数多且完成用时少者为优胜1.中国象棋【问题描述】在中国象棋中,马是一个非常有用的棋子,它能从任意一点出发遍历整个棋盘。

请你编写一个程序,判断一个马能否从指定的起始位置经过一定的步数跳到另一个位置。

棋盘有9*10个交叉点,编号从(1、1)到(9.10),马只能能走日字型,跳的时候不能跳出棋盘。

【标准输入】有多个测试用例,输入第一行包含一个正整数K(0<K<1000),表示有K组测试数据。

每个测试用例包含一行为(SX、SY、EX、EY、N)(1<=N<=20),分别代表起始位置、结束位置和步数。

【标准输出】对于每个测试用例,输出一行,如果在N部内能走到,则输出“YES”,否则输出“NO”。

【样例输入】11 1 5 5 10【样例输出】YES2.栈【问题描述】栈是在计算机中经常用到的一种数据结构,它限制仅在表的一端进行插入和删除运算的线性表。

栈的修改是按后进先出的原则进行。

每次退栈的总是当前栈中“最新”的元素,即最后进栈的元素,而最先插入的是被放在栈的底部,要到最后才能删除。

请编写一个程序,能得到栈经过一系列的操作后的数据元素的个数。

【标准输入】有多个测试用例,输入第一行包含一个正整数K(0<K<1000),表示有K组测试数据。

每个测试用例第一行包含一个正整数M(1<=M<=10000),表示有M个对栈的操作,以下包含M个正整数N(1<=N<=3),1表示进栈操作,2表示出栈操作,3表示取栈顶元素操作。

(当前栈为空时出栈操作不做任何操作)。

【标准输出】对于每个测试用例,输出一行,即当前栈的元素个数。

【样例输入】251 2 3 1 142 2 1 1【样例输出】223.摆数字【问题描述】用火柴摆数字是大家可能玩过的一个小游戏,用火柴能摆出以下的十个数字,每个数字需要一定量的火柴,如7需要3根火柴,而8需要7根火柴,请编写一个小程序,计算使用N 根火柴所能摆出的最小数字和最大数字。

ACM程序大赛选拔初赛试题 - 参考答案

ACM程序大赛选拔初赛试题 - 参考答案

《解方程》参考答案:
#include <stdio.h> #include <math.h> void main() {
int a,b,c,d; float x1,x2; scanf("%d %d %d %d",&a,&b,&c,&d); if(a==0) printf("x=%.2f",(float)(d-c)/b); else {
float dr=b*b-4*a*c; c-=d; if(dr>0) {
x1=(-b-sqrt(dr))/(2*a); x2=(-b+sqrt(dr))/(2*a); printf("x1=%.2f x2=%.2f\n",x1,x2); } if(dr==0) { x1=(-b+sqrt(dr))/(2*a); printf("x=%.2f\n",x1); } if(dr<0) printf("no answer\n"); } }
3、计算器 (难度系数:★★★☆☆)
题意:输入一个没有答案的算术式子,用计算机求出输出它的结果。 输入:一个字符串形如“a#b=”(#代表运算符号)。注意:输入的字符串中 a,b 代表的数 都为自然数。而且 a,b 的范围都是从 0 到 999。 输出:字符串对应的算式的答案。答案需保留两位有效数字。若无答案则输出“error” 示例:
输出:第1 行是选出顺序,第2 行是两名幸运儿的开始位置(按升序排列),位置编号之 间用一个空格分开。
示例:
输入(只选一组) 3 5 12
输出(幸运儿的位置)
2 13 241 53 2 4 6 8 10 12 3 7 11 5 19

ACM初步题及题解-推荐下载

ACM初步题及题解-推荐下载
装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术0艺料不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试22下卷,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看2度并22工且22作尽22下可22都能2可地护1以缩关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编5试要写、卷求重电保技要气护术设设装交备备4置底高调、动。中试电作管资高气,线料中课并3敷试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

acm大赛试题及答案

acm大赛试题及答案

acm大赛试题及答案ACM大赛试题及答案1. 题目一:字符串反转问题描述:编写一个程序,输入一个字符串,输出其反转后的字符串。

输入格式:输入包含一个字符串,字符串长度不超过100。

输出格式:输出反转后的字符串。

示例:输入:hello输出:olleh答案:```pythondef reverse_string(s):return s[::-1]input_string = input().strip()print(reverse_string(input_string))```2. 题目二:计算阶乘问题描述:编写一个程序,输入一个非负整数n,输出n的阶乘。

输入格式:输入包含一个非负整数n,n不超过20。

输出格式:输出n的阶乘。

示例:输入:5输出:120答案:```pythondef factorial(n):if n == 0:return 1else:return n * factorial(n - 1)n = int(input())print(factorial(n))```3. 题目三:寻找最大数问题描述:给定一个包含n个整数的数组,找出数组中的最大数。

输入格式:输入包含一个整数n,表示数组的大小,随后是n个整数。

输出格式:输出数组中的最大数。

示例:输入:5 1 2 3 4 5输出:5答案:```pythonn = int(input())numbers = list(map(int, input().split()))max_number = max(numbers)print(max_number)```4. 题目四:判断闰年问题描述:编写一个程序,输入一个年份,判断该年份是否为闰年。

输入格式:输入包含一个整数,表示年份。

输出格式:如果输入的年份是闰年,则输出"Yes",否则输出"No"。

示例:输入:2000输出:Yes答案:```pythonyear = int(input())if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):print("Yes")else:print("No")```5. 题目五:斐波那契数列问题描述:编写一个程序,输入一个非负整数n,输出斐波那契数列的第n项。

acm竞赛试题及答案

acm竞赛试题及答案

acm竞赛试题及答案ACM(Association for Computing Machinery)竞赛是一项全球性计算机科学竞赛,旨在锻炼参赛者的问题解决能力和编程技巧。

每年都有数千名来自不同学校的学生参加这一挑战。

本文将提供一些最近的ACM竞赛试题以及相应的答案,帮助读者了解和学习竞赛题目的类型和解题思路。

1. 问题描述给定一个由N个整数组成的数组A,请编写一个程序,找出数组中两个不同元素的差的最小值。

2. 输入格式- 第一行包含一个整数N,表示数组A的长度。

- 第二行包含N个以空格分隔的整数,表示数组A中的元素。

3. 输出格式输出一个整数,表示数组中两个不同元素的差的最小值。

4. 示例输入:51 52 9 12输出:15. 解题思路该问题可以通过对数组进行排序,并比较相邻两个数的差值来求解。

首先,将数组A进行升序排序。

然后,遍历排序后的数组,依次计算相邻两个数的差值,并记录其中的最小值。

最后,返回这个最小差值即可。

6. 代码实现```pythondef min_difference(nums):nums.sort() # 对数组进行升序排序min_diff = float('inf') # 初始化最小差值为正无穷大for i in range(len(nums)-1):diff = abs(nums[i] - nums[i+1]) # 计算相邻两个数的差值min_diff = min(min_diff, diff) # 更新最小差值return min_diff# 输入处理N = int(input())A = list(map(int, input().split()))# 调用函数并输出结果result = min_difference(A)print(result)```7. 答案解析对给定的数组进行排序后,遍历数组计算相邻两个数的差值,并记录其中的最小值。

上述代码中,首先将数组A进行升序排序,然后使用一个变量`min_diff`来记录最小差值。

ACM选拔赛试题

ACM选拔赛试题

ACM选拔赛试题
注意:程序文件命名为:Test+题号
1、已知四位数3025有一个特殊性质:它的前两位数30和后两位数25的和是55,而55的平方刚好等于该数(55*55=3025),编写一个程序求出所有的具有这种性质的四位数。

2、有的三位数很独特,它们每位上的数字互不相同且都不大于7,特别是十位数正好是百位数和个位数之差,编写程序求所有这样的三位数。

3、某电台组织一次智力竞赛,计划奖励30人。

准备了50件奖品,得一等奖者可得3件,二等奖可得2件,三等奖可得1件。

希望把所有奖品都发到获奖者手中,请编程找出所有的设奖方案(即各等奖各有多少人)。

4、修改31743的某一位数字,使之成为823的倍数。

5、在自然数中,各位数字之和的11倍正好等于自身的自然数只有一个,编写程序请找出这个自然数。

6、小明的妈妈是负责分发单位工资的。

为了使分发时有足够的零钞,同时又尽量不使每个人领到的钱太零碎。

每个月她都要计算出各种面值的钞票(100元、50元、20元、10元、5元、2元、1元)各需多少张。

假设每个人的工资都是整数元,你能否为她设计一个程序,从键盘输入10个人的工资,再计算各种面值的钞票各需多少张?
7、4名专家对四款赛车进行评论:
A说:2号赛车是最好的。

B说:4号赛车是最好的。

C说:3号赛车不是最佳赛车。

D说:B说错了。

事实上,只有一款赛车最佳,且只有一名专家说对了,其他3人说错了,请编程输出最佳赛车的车号,以及哪一位专家说对了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Your job is to calculate the total score for a given user.InputThe first line contains an integer np(1≤np≤300) which is the number of problems in Online Judge. The second line contains np integers representing the number of users who have solved this problem from problem 1000 to problem 1000+np-1.The third line contains an integers t(t≤10), which is the number of test cases.Each test case begins with an integer n, which is the number of problems the user has solved. Then it is followed by n distinct integers which are the problem ids. Problem id is labeled from 1000.OutputFor each test case, print the total score he can get on a single line.Sample Input10100 10 11 3 45 7 34 200 70 142 1000 10012 1001 10023 1000 1007 1008Sample Output121872.求值Time Limit: 1000MS Memory Limit: 10000K Description给出N个整数X1,X2,X3,……,Xn,将这N个数从小到大排序为A1,A2,A3,……,An,记数列A1,A2,A3,……,An的奇数项之和为P,偶数项之和为Q,令T=|P-Q|,求出T的值。

Input输入文件的第1行为整数N(1≤N≤50000)。

接下来的N行每行有一个整数,按顺序给出X1,X2,X3,……,Xn的值(|Xi|<=1000)Output输出整数T的值。

Sample Input3132Sample Output23.软件工程Time Limit: 1000MS Memory Limit: 10000K DescriptionMerlin的软件工程老师Max布置了开发一个软件的大作业。

由于这是一个大型软件,所以单靠Merlin 一个人不可能在预定时间内做完,必须与其他人合作。

由于大家都要做这个作业,所以Merlin理所当然找他的同班同学,但是同班同学的能力参差不起。

全班都很明确,这个工程可以分为n个不同的部分,每个部分都是独立,并且每个人都有一定的能力完成其中一个部分。

Merlin认为,自己应该去做项目经理的职位,把n个部分分配给若干个人,不同的部分可以分配给一个人或者多个人,但是一个部分只能分配给一个人。

Merlin的人缘很好,同学们都愿意与他合作。

但是,每个人每个部分能够得到的分数是不同的,Merlin 希望给每个人每个部分能够得到的分数做一个估算(百分制),而能够得到的分数就是项目的个人部分的总和,最后求出平均值。

即最后分数=每个部分的分数之和/n。

面对众多的分数,Merlin害怕了,而且Merlin很懒,自己不想去做其中任何的一个部分,请你编写一个程序,帮组Merlin求出可以得到的最高分。

Input第1行是一个正整数n(n≤1000),表示项目可以划分为n部分。

第2行是一个正整数m(m≤1000),表示全班一共有m个同学(不包括Merlin)。

然后是m行n列的正整数,第i行j列正整数k(k≤100),表示同学i可以在项目中的第j部分获得分数k。

Output只有一个实数。

Merlin能够得到的最大分数,结果保留两位小数。

Sample Input5590 90 90 85 9090 85 90 90 8590 90 85 90 9090 90 90 90 8585 90 85 90 90Sample Output90.004.脱离地牢Time Limit: 1000MS Memory Limit: 10000K Description在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活。

他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想得到这两块石头了,只要把它们溶化,Satan就能吸收其精华大增自己的魔力。

于是有一天他趁二人不留意,吧他们带到了自己的地牢,分别困在了不同的地方。

然后Satan念起了咒语,准备炼狱,届时二人都将葬身于这地牢里。

危险!Paris与Helen都知道了Satan的意图,他们怎样才能打败魔王,脱离地牢呢?Paris想起了父王临终前留给他的备忘本,原来他早已料到了Satan的野心,他告诉Paris只要把两块魔法石合在一起,念起咒语,它们便会放出无限的光亮,杀死魔王,脱离地牢,而且本子上还附下了地牢的地图,Paris从中了解到了Helen的位置所在。

于是他决定首先要找到Helen,但是他发现这个地牢很奇怪,它会增强二人魔法石所带磁力的大小,而且会改变磁力的方向。

这就是说,每当Paris向南走一步,Helen有可能会被石头吸引向北走一步。

而这个地狱布满了岩石与岩浆,Paris必须十分小心,不仅他不能走到岩石或岩浆上,而且由于他行走一步,Helen的位置也会改变,如果Helen碰到岩石上,那么她将停留在原地,但如果Helen移动到了岩浆上,那么她将死去,Paris就找不到她了。

Paris仔细分析了地图,他找出了一条最快的行走方案,最终与Helen相聚。

他们一起念出了咒语“@^&#…%@%&$”,轰隆一声,地牢塌陷了,他们又重见光明……Input输入数据第1行为两个整数n,m(3≤n,m≤20),表示地牢的大小,n行m列。

接下来n行,每行m个字符,描述了地牢的地图,“.”代表通路,“#”代表岩石,“!”代表岩浆。

输入保证地牢是封闭的,即四周均是岩石或岩浆。

“P”和“H”分别代表Paris和Helen的位置。

接下来有4个字符“N”(北),“S”(南),“W”(西),“E”(东)的排列,表示Paris分别向N、S、W、E方向走时Helen受磁石磁力影响的移动方向。

Output输出文件只有1行,如果Paris能找到Helen,输出一个整数d,为Paris最少需要行走的步数;如果Paris在255步之后仍找不到Helen,则输出“Impossible”。

注意相遇是指Paris与Helen最终到达同一个格子,或者二人在相邻两格移动后碰在了一起,而后者的步数算他们移动的步数。

Sample Input5 5######H..##.!.##.#P######WNSESample Output55.最大公共子串Time Limit: 1000MS Memory Limit: 10000K Description从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩下的字符按原来顺序组成的串是该串的子串。

例如:“”,“a”,“xb”,“aaa”,“bbb”,“xabb”,“xaaabbb”都是串“xaaabbb”的子串。

(例子中的串不包含引号。

)编程求N个非空串的最长公共子串的长度。

限制:2≤N≤100;N个串中的字符只会是数字0,1,……,9或小写英文字母a,b,……,z;每个串非空且最多含100个字符:N个串的长度的乘积不会超过30000。

Input文件第1行是一个整数T,表示测试数据的个数(1≤T≤10)。

接下来有T组测试数据。

各组测试数据的第1行是一个整数Ni,表示第i组数据中串的个数。

各组测试数据的第2至N+1行中,每行一个串,串中不会有空格,但行首和行末可能有空格,这些空格当然不算作串的一部分。

Output输出T行,每行一个数,第i行的数表示第i组测试数据中Ni个非空串的最长公共子串的长度。

Sample Input13abbccdSample Output6.Stone GameTime Limit: 1000MS Memory Limit: 10000KDescriptionDennis and Joyce love to collect stones and play games with them. Up till now they have collected Na white stones and Nb black stones, and they are going to play a new game. The rules of the game is as follows:(1) All the stones are put into a pocket initially, so that each stone has equal possibility to be picked up, and each time a stone is picked up randomly.(2) The two players take turns to pick up a stone, if the stone is black, the current player should put it back to the pocket; otherwise the player could keep the stone.(3) Whoever picks up the last white stone wins the game.Now they haven’t decided who plays first. To make a better decision, Dennis have asked you, an excellent programmer, to calculate the winning possibility for the first player. Since they are going to start playing soon, you must finish the job as quickly as possible, Come on!InputThe first line is a single number n, the number of test cases followed. In the next n lines, each line contains two non-negative integers, Na and N b,(0≤Na, Nb≤64).OutputFor each test case, output a real number indicating the possibility for the first player to win. The answer should be rounded to 6 digits after the decimal point. No extra spaces are allowed.Sample Input31 00 13 10Sample Output1.0000000.0000000.5002827.速配游戏Time Limit: 1000MS Memory Limit: 10000K Description有一个速配电视节目。

相关文档
最新文档