资源描述
.A.Problem A: 6666666666是2015年的流行词,起源无从考究,但总体意思就是“玩的很溜”,夸奖的意思。同学们的宿舍文化中66666表现在以下几个方面: 1.在同学们的语气中,我觉得应该是赞赞赞赞赞的意思。 2.有时候表示对某些人干一件事非常熟练的一种开着玩笑的“赞美”。 3.有时候,还表示对于一些“空想”、“不切实际”的想法的带着玩笑的“嘲讽”。 当然,大神们在做出了别的同学完成不了的题目的时候,大家都衷心的说:66666 Input输入有多组数据。 每组数据包含一个整数N(0 = N 1030),表示一条评论,占一行。 Output对应输出多组结果,每位数据上包含一个6,就输出一个“zan!”,如果该行数据没有6就输出一个空行 Sample Input6678612345789162636666Sample Outputzan!zan!zan!zan!zan!zan!zan!zan!zan!#include #include int main() int i,j; char a30; while(scanf(%s,a)!=EOF) for(i=0;ai!=0;i+) if(ai=6) printf(zan!); printf(n); return 0;.B.有这样一个有趣的算术谜题:一百馒头一百僧,大僧三个更无争。小僧三人分一个,大小和尚得几丁?根据此谜题,我们对问题进行改编,a个和尚分a个馒头,正好分完。如果老和尚一人分3个,小和尚3人分一个,你算算大、小和尚各有多少人? Input输入有多行。第一行包含一个整数N(0 N 1000),表示有N组数据。 接下来N行,每行有一个整数a(10a108), 表示a个和尚和a个馒头。 Output每组数据输出两个整数,分别表示大、小和尚各多少人,数据之间用空格分隔。 Sample Input21002000Sample Output25 75500 1500#include #include #include#includeint main() int n,i,j,t,a; while(scanf(%d,&n) t=0; if(n=0) break; for(i=2;n!=1;) if(n%i=0) t+; n/=i; else i+; printf(%dn,t); return 0;。C,Problem C: 今天谁领读早自习Time Limit: 1 SecMemory Limit: 128 MBSubmit: 869Solved: 170SubmitStatusWeb BoardDescription“面朝大海,春暖花开”,美丽的唐岛湾畔,伫立着一个梦想起飞的摇篮青岛开发区珠江路小学。学校背倚青山,南临大海,环境优美,教学设施齐全。小明非常幸运,就在这座美丽的学校学习。他已经上五年级了,但是从上一年级至今,他一直有一个未了的心愿,就是能有机会领读班级的早自习,站在讲台上带领全班同学进行晨读,他感觉那是一件非常光荣的事情,但是要想成为一名领读者,并非易事,需要回答出老师每天早上为孩子们准备的问题才算过关。五年级的孩子们都学过一个定理:大于1的正整数都能分解成若干个素数乘积的形式。于是,老师便巧妙地设置了这样一个问题,老师随机给出一个正整数,要求孩子们能快速算出这个正整数到底包含多少个质数(又称素数)因子,最先说出答案的孩子就是当天的领读者,老师们真是用心良苦啊!请你编程帮助小明能够以最快的速度找到答案,以了却他的心愿吧! Input输入包含多组数据。 每组包含一个整数n(1n=10000),表示要找出正整数n可以由多少个素数因子相乘来表示。当最后一行输入0时,结束输入,同时此行数据不需要计算输出。 Output对应每组输入数据,输出整数n所包含的质数因子的个数。 Sample Input101000Sample Output24#include #include int main() int i,t,n; while(scanf(%d,&n)!=EOF) if(n=0) break; t=0; for(i=2;n!=1;) if(n%i=0) n/=i; t+; else i+; printf(%dn,t); return 0;Problem D: 算法普及课程Time Limit: 1 SecMemory Limit: 128 MBSubmit: 532Solved: 113SubmitStatusWeb BoardDescription在将来的某一天,ACM-ICPC在我们学校越来越受到重视了,大家对算法的学习热情非常高,学校决定每天都开设很多算法普及课,由于课程太多,学校没有太多的老师,于是学校派我们ACM集训队的队员去当小讲师。每个课程都有固定的开始时间和结束时间,我们集训队的小讲师精力非常充沛,只要课程不冲突,讲师们都乐意去上,上课时间冲突的话视为两个课程冲突,比如(13和24)就冲突,(15和510)这样就不冲突。现在安排课程讲师的lynncui非常头疼,因为课程成百上千,需要的讲师也很多很多,为了安排这些讲师,lynncui首先要知道每天最少需要多少讲师,你能告诉他吗? Input输入包含多组数据。第一行有一个整数N(0 N 1000),表示课程的数目。 接下来N行,每行有两个整数S和T, (0 = S T = 24), 表示该课程的开始时间和结束时间。 Output输出一个整数代表最少需要多少讲师。 Sample Input61 52 33 46 78 910 12Sample Output2HINTSample里面只需要两个讲师,一个上第1门课(1-5),另外一个上剩下5门课(2-3,3-4,6-7,8-9,10-12)。 .D./找被使用最多的一个小时的次数#include #include int main() int i,j,s,t,n,max,a25= 0; while(scanf(%d,&n)!=EOF) max=0; for(i=0; in; i+) scanf(%d %d,&s,&t); for(j=s; jt; j+) aj+; for(j=0;jmax) max=aj; printf(%dn,max); return 0;Problem E: 神奇的魔镜Time Limit: 1 SecMemory Limit: 128 MBSubmit: 465Solved: 158SubmitStatusWeb BoardDescription某某国王(不是萨拉克门托!)有一个神奇的魔镜,它可以把东西变为原来的两倍(可惜是反的)。某日,他感到很无聊,于是把皇后的一串珠子变了不知道几次,皇后回来之后不是很高兴,她还是喜欢原来那串珠子,现在告诉你改变之后珠子的形状,请你告诉她,原来的珠子是什么样子的。 Input输入有多组测试用例,每组一行,每行一串字符,表示现在的珠串,长度小于100。 Output输出对应有多行,每行输出原来的珠串。 Sample Input1232232112322321121121abbaSample Output1232121abHINT.Problem E: 神奇的魔镜值得注意的是,做到什么时候停止呢?只是做到a不是回文串就停止了,不行这个,还得加一个判断,就是当a的长度为奇数时也得停下来!因为魔镜变出来的字符串的长度一定都是偶数的,所以一旦是奇数就应该停止,然后输出#include #include #includeint main() int i,j,x,f; char a100; while(scanf(%s,&a)!=EOF) x=strlen(a); if(x%2=0) do f=0; for(i=0,j=x-1; i=j) f=1; x/=2; while(f=1&x%2=0); for(i=0; ix; i+) printf(%c,ai); printf(n); else printf(%sn,a); return 0;.F.Problem F: 奥运会跳水比赛Time Limit: 1 SecMemory Limit: 128 MBSubmit: 360Solved: 162SubmitStatusWeb BoardDescription跳水项目起源于游泳运动的发展过程中,它是一项优美的水上运动,它是从高处用各种姿势跃入水中或是从跳水器械上起跳,在空中完成一定动作姿势,并以特定动作入水的运动。 跳板跳水是奥运会跳水比赛中的一个项目,男女分别有六个和五个无难度系数限制的自选动作以及各有五个有难度系数限制的自选动作,其难度系数的总和不得超过9.5。在比赛中,5名裁判员根据运动员对每个动作的完成情况进行评分,裁判员打出分数以后,先删去最高和最低的无效分,余下3名裁判员的分数之和乘以运动员所跳动作的难度系数,便得出该动作的最终得分。现给出了多个运动员在某届奥运会中,某一轮比赛的打分情况,请你帮忙计算出各个运动员本轮比赛的最终得分并按照得分给出运动员们的暂时的排名吧! Input输入有多行。第一行是球队数量n(1n=10)接下来有n行,每行数据包含运动员的姓名(不含空格,长度不超过30个字符)和5个浮点数,分别表示5个裁判的评分(0=评分=10),数据间以空格分开。 Output输出运动员们按照完成本轮比赛的得分的排名情况(保证所有运动员们的得分各不相同),每行输出每个运动员的名次、姓名和该轮比赛的得分(各个运动员的得分保证都不相同,结果保留1位小数),数据间用一个空格分开,每行末尾没有空格。 Sample Input3Qiubo 8.5 7.5 9 8 9.5 3.2Boudia 8 8.5 9 9.5 8.5 3.0Linyue 9 9.5 9.6 8 8.5 3.6Sample Output1 Linyue 97.22 Qiubo 81.63 Boudia 78.0#include #include #includeint main() int i,j,f,k,n; float max,min; char b1030,p30; float a106,c10,s,t; scanf(%d,&n); for(i=0; in; i+) scanf(%s %f %f %f %f %f %f, bi,&ai0,&ai1,&ai2,&ai3,&ai4,&ai5); for(i=0; in; i+) s=0; max=0;min=10; for(j=0; jmax) max=aij; if(aijmin) min=aij; ci=(s-max-min)*ai5; for(i=0; in-1; i+) for(j=i+1; jn; j+) if(cicj) t=ci; ci=cj; cj=t; strcpy(p,bi); strcpy(bi,bj); strcpy(bj,p); for(i=0; iProblem G: 白雪公主和七个小矮人白雪公主和七个小矮子的童话故事伴随了一代又一代人的童年成长。每每想起这段童话故事,全都是些美好的回忆!话说白雪公主和七个小矮人生活在一起的时候,每个周末他们都会举办一个热闹的Party,但是每个小矮人都希望自己是那个邀请白雪公主跳第一支舞的人,这可让白雪公主有些为难了,他不想让任何一个小矮人伤心,于是聪明的她想到了一个好主意,她给7个小矮人们从17编好序号,Problem G: 白雪公主和七个小矮人Time Limit: 1 SecMemory Limit: 128 MBSubmit: 1426Solved: 431SubmitStatusWeb BoardDescription白雪公主和七个小矮子的童话故事伴随了一代又一代人的童年成长。每每想起这段童话故事,全都是些美好的回忆!话说白雪公主和七个小矮人生活在一起的时候,每个周末他们都会举办一个热闹的Party,但是每个小矮人都希望自己是那个邀请白雪公主跳第一支舞的人,这可让白雪公主有些为难了,他不想让任何一个小矮人伤心,于是聪明的她想到了一个好主意,她给7个小矮人们从17编好序号,然后她会随机的抽取一个幸运数据,根据这个数据的个位数字来判定谁是舞会的幸运小矮人,如果没有选中任何一位小矮人,他们将一起和白雪公主愉快的跳圆圈舞,这应该是白雪公主最期望的结果,哈哈! Input输入有多组数据。每组包含一个正整数n(0=n=108),表示白雪公主抽取的幸运数据。 Output每行输出一个字符串。如果选中的是小矮人,输出的字符串表示对应小矮人的姓名(17对应小矮人姓名分别是Doc,Bashful,Sleepy,Sneezy,Happy,Dopey,Grumpy,否则输出Circle dance。 Sample Input1251000Sample OutputHappyCircle dance然后她会随机的抽取一个幸运数据,根据这个数据的个位数字来判定谁是舞会的幸运小矮人,如果没有选中任何一位小矮人,他们将一起和白雪公主愉快的跳圆圈舞,这应该是白雪公主最期望的结果,哈哈! Input输入有多组数据。每组包含一个正整数n(0=n=108),表示白雪公主抽取的幸运数据。 Output每行输出一个字符串。如果选中的是小矮人,输出的字符串表示对应小矮人的姓名(17对应小矮人姓名分别是Doc,Bashful,Sleepy,Sneezy,Happy,Dopey,Grumpy,否则输出Circle dance。 Sample Input1251000Sample OutputHappyCircle dance#include #include #include #include int main() int n; char a1015= Circle dance,Doc, Bashful,Sleepy,Sneezy,Happy ,Dopey,Grumpy,Circle dance,Circle dance ; while(1) if(scanf(%d,&n)=EOF) break; printf(%sn,an%10); return 0;.Problem H: 奇数幻方Problem H: 奇数幻方Time Limit: 1 SecMemory Limit: 128 MBSubmit: 148Solved: 74SubmitStatusWeb BoardDescription幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。幻方也是一种汉族传统游戏。 在射雕英雄传中郭黄二人被裘千仞追到黑龙潭,躲进瑛姑的小屋。瑛姑出了一道题:数字19填到三行三列的表格中,要求每行、每列、及两条对角线上的和都相等。这道题难倒了瑛姑十几年,被黄蓉一下子就答出来了。这就是一个最简单的3阶平面幻方。因为幻方的智力性和趣味性,很多游戏和玩具都与幻方有关,如捉放曹操、我们平时玩的六面体,也成为学习编程时的常见问题。 对平面幻方的构造,分为三种情况:N为奇数、N为4的倍数、N为其它偶数(4n+2的形式),其中N 为奇数时,所构造的幻方即为奇数幻方,运用罗伯特的楼梯法来构造最为简单,具体方法如下:(1)将1放在第一行中间一列;(2)从2开始直到nn止各数依次按下列规则存放:按 45方向行走,如向右上;每一个数存放的行比前一个数的行数减1,列数加1;(3)如果行列范围超出矩阵范围,则回绕。例如1在第1行,则2应放在最下一行,列数同样加1;(4)如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。 奇数幻方是不是很有趣呢?请你按照上述方法构造出指定奇数的奇数幻方吧! Input输入只有一行,一个正的奇数n(0n100)。 Output输出n*n的奇数幻方,共n行,每行n个整数(1=整数=n*n)。 Sample Input3Sample Output8 1 63 5 74 9 2HINT#include #include #includeint main() int i,j,n,k1,k2,x; int a100100=0; scanf(%d,&n); a0n/2=1; i=0; j=n/2; for(x=2; x=n*n; x+) k1=i; k2=j; i=i-1; j=j+1; if(i=-1) i=n-1; if(j=n) j=0; if(aij!=0|(k1=0)&(k2=n-1) ak1+1k2=x; i=k1+1; j=k2; else aij=x; for(i=0;in;i+) for(j=0;jn-1;j+) printf(%d ,aij); printf(%dn,aij); return 0;.Problem I: 蛙泳最好成绩Problem I: 蛙泳最好成绩Time Limit: 1 SecMemory Limit: 128 MBSubmit: 729Solved: 245SubmitStatusWeb BoardDescription游泳运动是男女老幼都喜欢的体育项目之一。古代游泳,根据现有史料的考证,国内外较一致的看法是产生于居住在江、河、湖、海一带的古代人。他们为了生存,必然要在水中捕捉水鸟和鱼类作食物,通过观察和模仿鱼类、青蛙等动物在水中游动的动作,逐渐学会了游泳。 小明作为珠江路小学一名六年级的小学生,蛙泳水平了得,所以一周后他要代表学校参加青岛市的蛙泳比赛,于是这一周内他进入了集训阶段,每天都要进行一次5000米的训练,陪他一起集训的同学帮他记录下了每天5000米蛙泳的开始和结束时间,请你编程帮小明计算出本周内5000米蛙泳的最好成绩! Input输入包含多组数据。每组数据的第一行输入一个整数week(1=week=7),表示小明是星期几开始集训的。接下来7行,每行两个数据,分别表示小明一周内每天5000米蛙泳的开始和结束时间。 Output输出包含两个数据。第一个数据输出一个字符串,表示小明是星期几集训时取得了5000米蛙泳的最好成绩(保证最好成绩唯一),第二个数据输出最好成绩的总时长(分钟)。 Sample Input314:00 14:308:25 8:5020:37 21:019:12 9:3315:40 16:0219:05 19:3510:58 11:16Sample OutputTuesday 18HINT17对应的字符串分别是:Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday#include #include int main() int a,b,c,d,min,k; int n,i,j; int x7; char y720= Sunday,Monday,Tuesday,Wednesday,Thursday, Friday,Saturday ; while(scanf(%d,&n)!=EOF) for(i=0; i7; i+) scanf(%d:%d %d:%d,&a,&b,&c,&d); xi=c*60+d-a*60-b; min=x0; k=0; for(i=0; i7; i+) if(ximin) min=xi; k=i; j=(n+k)%7; printf(%s %dn,yj,min); return 0;. J.Problem J: 蓄水池出问题了Time Limit: 1 SecMemory Limit: 128 MBSubmit: 240Solved: 121SubmitStatusWeb BoardDescription学校的蓄水池出问题了。这个蓄水池装有9根水管,其中1根为进水管,8根为出水管。进水管坏了,打开后关不上了,正以均匀的速度不停地向蓄水池注水,必须排光池子里的水才能彻底维修。可出水管长久不用,老化了,打开很费劲。如果8根出水管全部打开,a小时就能把满池子的水全部排光;如果仅打开5根出水管,b小时才能把满池的水全部排光。于是,校长找来了维修工想办法,维修工认为,估计最快在进水管打开c小时后,他们才能把池子里的水排光。现在请你帮忙算算,在这个时间内,至少要打开多少根出水管,才能让池子里的水排光。 Input输入有多组数据。 每组数据包含三个正整数a、b和c(0a,b,c=20),a表示8根出水管全部打开,a小时才能把满池的水全部排光。b表示仅打开5根出水管,b小时才能把满池的水全部排光。c表示最快在进水管打开c小时后,才能把池子里的水排光。当输入的数据中有一个0时,结束输入,同时此行数据不需要计算输出。 Output输出对应有多行,每行输出一个正整数,表示在输入的那个时间内,至少要打开多少根出水管,才能让池子里的水排光。 Sample Input4 8 60 5 0Sample Output6HINT#include #include int main() int a,b,c,x,m,y; while(1) scanf(%d %d %d,&a,&b,&c); if(a=0|b=0|c=0) break; m=(8*a-5*b)/(a-b); x=8*a-m*a; y=(x+m*c)/c; printf(%dn,y); return 0;
展开阅读全文