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