2560: 破解情书

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:11 解决:2

题目描述

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