破解情书

 1 Sec 64 MB |  显示标签
1643
通过提交

题目描述

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串。
数据规模
对于50%的数据,k≤100;
对于80%的数据,k≤1 000;
对于100%的数据,k≤10 000,m ≤200,n; l≤100 000。

输入格式

第一行给出了四个用空格隔开的正整数,分别为n、m、l、k。其中n、m、l两两互质;
第二行给出了一个m位的01串(中间没有空格),即为密钥;
第三行给出了一个n位的01串(中间没有空格),即为经过加密后的密文。

输出格式

输出只有一行,为一个n位的01串,即为原文。

样例输入 #1

5 3 2 2
101
11010

样例输出 #1

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即是密文。它与我们的样例输入吻合。

 上传者
coach
 创建时间
2013-09-23 15:07