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’。然后就是根据题目给出的操作命令进行字符串处理即可。
对新生的话
字符串操作是一项基本功,一定要掌握,合理的使用可以让题目的处理简便很多。
另外,读题的时候一定要细心、留意细节,有不是非常理解的句子一定要读到理解透彻才去动手做题,否则死再多次都只是浪费时间而且拖累队友。