Acm文档Word文档格式.docx
《Acm文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《Acm文档Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
SampleOutput
1234567c
这个题目比较简单,主要就是计算一下,哪位该清零,哪位该置一,然后移位一下就ok了
代码:
#include<
stdio.h>
int
main()
{
int
r,x,y;
scanf("
%lx,%d,%d"
&
r,&
x,&
y);
r
|=
3<
<
(y-1);
&
=
~(1<
(y-2));
x);
printf("
%lx"
r);
}
*************************************************************************************************
第二题:
原文:
破译密码
据说最早的密码来自于罗马的凯撒大帝。
消息加密的办法是:
对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:
消息原文中的每个字母A都分别替换成字母F)。
而你要获得消息原文,也就是要将这个过程反过来。
密码字母:
ABCDEFGHIJKLMNOPQRSTUVWXYZM
原文字母:
VWXYZABCDEFGHIJKLMNOPQRSTU
注意:
只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。
最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:
1.起始行:
START
2.密码消息:
由1到200个字符组成一行,表示凯撒发出的一条消息.
3.结束行:
END
在最后一个数据集之后,是另一行:
ENDOFINPUT
每个数据集对应一行,是凯撒的原始消息。
START
NSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJX
END
NBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJHTSINSWTRJ
IFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJ
INWAR,EVENTSOFIMPORTANCEARETHERESULTOFTRIVIALCAUSES
IWOULDRATHERBEFIRSTINALITTLEIBERIANVILLAGETHANSECONDINROME
DANGERKNOWSFULLWELLTHATCAESARISMOREDANGEROUSTHANHE
这个题主要是两个地方,一个是字母的替换,另一个是接收每行的内容并辨识其性质(信息开始,信息结束,全部结束,正文)。
没有什么太复杂的地方。
第三题:
小孩报数问题
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
第一行输入小孩的人数N(N<
=64)
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S(W<
N),用逗号"
间隔
按人名输出小孩按顺序出列的顺序,每行输出一个人名
5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3
这题是约瑟夫环问题,谭浩强那本C语言的课后题里就有。
这道题只需要在这篇文章(【09.12.08】约瑟夫环问题C语言编程)中的代码基础上稍作一点修改就可以了,这里就不再贴出了。
第四题:
时间日期格式转换
世界各地有多种格式来表示日期和时间。
对于日期的常用格式,在中国常采用格式的是“年年年年/月月/日日”或写为英语缩略表示的”yyyy/mm/dd”,此次编程大赛的启动日期“2009/11/07”就是符合这种格式的一个日期,而北美所用的日期格式则为“月月/日日/年年年年”或”mm/dd/yyyy”,如将“2009/11/07”改成这种格式,对应的则是”11/07/2009”。
对于时间的格式,则常有12小时制和24小时制的表示方法,24小时制用0-24来表示一天中的24小时,而12小时制只采用1-12表示小时,再加上am/pm来表示上午或下午,比如”17:
30:
00”是采用24小时制来表示时间,而对应的12小时制的表示方法是”05:
00pm”。
注意12:
00:
00pm表示中午12点,而12:
00am表示凌晨12点。
对于给定的采用”yyyy/mm/dd”加24小时制(用短横线”-”连接)来表示日期和时间的字符串,请编程实现将其转换成”mm/dd/yyyy”加12小时制格式的字符串。
第一行为一个整数T(T<
=10),代表总共需要转换的时间日期字符串的数目。
接下来的总共T行,每行都是一个需要转换的时间日期字符串。
分行输出转换之后的结果
2
2009/11/07-12:
12:
12
1970/01/01-00:
01:
01
11/07/2009-12:
12pm
01/01/1970-12:
01am
Hint
注意中午和凌晨时间的特殊表示
这个题目主要注意一下那个凌晨12点和中午12点的表示。
编程方面,我的做法是把内容都接收下来之后,经24/12小时表示法转换、添加符号(-
/ampm)后,再更换为题目要求的月日年顺序输出。
字母旋转游戏
给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。
例如,当M=5,N=8时,矩阵中的内容如下:
ABCDEFGH
VWXYZABI
UJKLMNCJ
TIHGFEDK
SRQPONML
M为行数,N为列数,其中M,N都为大于0的整数。
分行输出相应的结果
49
ABCDEFGHI
VWXYZABCJ
UJIHGFEDK
TSRQPONML
这个题目感觉在这五个题中是有一点难度的。
方法是按照如下图的顺序,依次填充数组元素,最后再输出该二维数组即可。
输出的时候要注意一下,根据SampleOutput所示,每个元素前面有3个空格,如果不注意这个的话,评判系统会报错。