Acm文档.docx

上传人:b****6 文档编号:7977370 上传时间:2023-01-27 格式:DOCX 页数:8 大小:71.49KB
下载 相关 举报
Acm文档.docx_第1页
第1页 / 共8页
Acm文档.docx_第2页
第2页 / 共8页
Acm文档.docx_第3页
第3页 / 共8页
Acm文档.docx_第4页
第4页 / 共8页
Acm文档.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Acm文档.docx

《Acm文档.docx》由会员分享,可在线阅读,更多相关《Acm文档.docx(8页珍藏版)》请在冰豆网上搜索。

Acm文档.docx

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个空格,如果不注意这个的话,评判系统会报错。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1