2015NCHU第一届ACM新生选拔赛B题题解

B.Find my room

题目定位及考察点

难度等级:A

考察点:字符串处理,简单模拟

 

题意翻译

LYK、HYK、LCX三人来到酒店已经是傍晚6点了,真的非常非常饿,所以他们希望可以马上放好行李去吃饭,于是他们就去问房间号了。这个时候,酒店前台对他们说,“你们可以用身份证后M位数经过一系列变换后得到房间号码”。现在他们实在是饿得头晕脑胀,非常需要你的帮忙,所以快点解出题目吧,不然他们就饿死了。

给一个例子。LYK的身份证号码是12345678901234567890,现在需要截取后10位数(M=10),则数字变为1234567890。现在需要经过3组变换命令:1 1,5 1,4 -1。则变换后的数字为2233667890,所以他们的房间号就是2233667890了。

输入的第一行是一个整数N,代表有N组数据,N的取值范围是1到1000。接下来每一组输入样例的第一行包含三个整数A、M和B。A代表身份证号码,长度为20位数。M代表需要截取身份证的后M位数,M取值范围从1到20。B代表有多少组命令,取值范围在1到1000之间。接下来是B组命令,每一行包含两个整数i和flag。i代表把身份证号码截取M位以后所得的数字从左数起第i位数,从1开始,取值范围在1到100之间。Flag的值为1则代表加1,值为-1则代表减1。需要注意的是,密码锁的数字是连续的,也就是说,9的下一个数字是0。

对于每一组样例,输出对应的房间号,每组样例占一行。

 

解题思路

这道题的题意非常直白了,唯一需要注意的就是数字9和0的变换操作。题目的最后一句话说,密码锁的数字是连续的,而且9的下一个数字是0,结合题目给出的例子可以得知‘9’+1=‘0’、‘9’-1=‘8’、‘0’+1=‘1’、‘0’-1=‘9’。然后就是根据题目给出的操作命令进行字符串处理即可。

 

对新生的话

字符串操作是一项基本功,一定要掌握,合理的使用可以让题目的处理简便很多。

另外,读题的时候一定要细心、留意细节,有不是非常理解的句子一定要读到理解透彻才去动手做题,否则死再多次都只是浪费时间而且拖累队友。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值