2560: 破解情书
题目描述
dd_engi和她的GirlFriend交换情书十分频繁。dd_engi总会把这些情书用01串的形式储存在电脑里。为了防止秘密被盗,dd_engi自己设计了一种新的加密方法。假设原文和密钥是长度分别为n和m的01串(0 < m < n),dd engi的加密方法能够用这个密钥通过多次加密操作将原01串进行加密。一次加密操作的定义如下:先将输入的01串的低m位(后m位)与密钥做异或操作,再将改变后的01串循环右移l位后输出。完整的加密操作需要将以上操作循环k次:第一次操作的输入是原文,以后每次操作的输入是上一次操作的输出,第k次操作的
输出就是最后的密文。
佳佳得到了dd engi电脑里的这些01串。为了破解情书,取得真经,首先他需要把这些加密后的01串还原成原来的01串。
输入
第一行给出了四个用空格隔开的正整数,分别为n、m、l、k。其中n、m、l两两互质;
第二行给出了一个m位的01串(中间没有空格),即为密钥;
第三行给出了一个n位的01串(中间没有空格),即为经过加密后的密文。
输出
输出数据一共一行。
为一个n位的01串(中间没有空格),即为原文。
样例输入 复制
5 3 2 2
101
11010
样例输出 复制
11100
提示
【样例说明】
假设明文为11100。第一次操作将11100与密钥101进行异或并循环右移2位(若原01串为s[0]; s[1],…,s[n-1],则循环右移一位后的01串为s[n-1],s[0],… ,s[n-2],循环右移l位可以认为是将循环右移一位的操作重复l次):
11100
xor 101
11001 ---> 01110
第二次操作将01110与密钥101进行异或并循环右移2位:
01110
xor 101
---------
01011 ---> 11010
最后的结果11010即是密文。它与我们的样例输入吻合。
【数据规模】
对于50%的数据,k≤100;
对于80%的数据,k≤1 000;
对于100%的数据,k≤1 0000,m≤200,n,l≤10 0000