线性反馈移位寄存器
#描述#
一个N位寄存器,其中每一位存的要么是1要么是0。在每个单位时间里,选取其中的若干位进行异或运算(偶数个1结果为0,奇数个则为1)。然后将原寄存器中的最高位移走,并另外的每一位都移向高一位,将之前的异或结果移入最低位。显然,这样的操作经过若干轮后,必会出现重复。从每个串出发可以不出现重复的操作次数最多为多少。例如原寄存器中位是1101,选取的位是第1,3位即1,0,则异或后为1,新结果为1011。
设有3位,而每次操作取最高位和最低位异或,则当从111开始时,操作如下:
111->110->101->010->100->001->011->111
结果为7。
如果是X->Y->Z->Y算作可以从X出发操作3次。
#格式#
##输入格式##
第一行一个整数N(1<=N<=16)。
接下来一行中有一个长N的01串,表示每次操作中选取的中哪几位,1代表选取,0代表不选取,最左端的是代表最高位。
##输出格式##
每组数据输出一个值,代表最大周期。
#样例1#
##样例输入1##
3
101
##样例输出1##
7
#限制#
1000ms
32768KB
#提示#
#来源#
DK