Gijswijt序列是一种增长十分缓慢的数列,该数列中的每一项都是此前重复次数最多的后缀子列。
具体来说,第n项$g_n$的值可以这样来计算:
考察长度为k的后缀子列$g_{n-k},\ldots,g_{n-1}$,若$g_{n-2k},\ldots,g_{n-k-1}$与$g_{n-k},\ldots,g_{n-1}$相等,那么就称后缀子列$g_{n-k},\ldots,g_{n-1}$重复了两次。
类似地,若子列$g_{n-mk},\ldots,g_{n-(m-1)k-1}$,子列$g_{n-(m-1)k},\ldots,g_{n-(m-2)k-1}$,。。。,子列$g_{n-k},\ldots,g_{n-1}$都完全相同,那么就称后缀子列$g_{n-k},\ldots,g_{n-1}$重复了m次。
对每个$k$,记后缀子列$g_{n-k},\ldots,g_{n-1}$的最大重复次数为$m_k$,亦即长度为mk的后缀子列$g_{n-mk},\ldots,g_{n-1}$是由长度为k的后缀子列$g_{n-k},\ldots,g_{n-1}$重复m次所得。
那么$g_n=\max_km_k$。
该序列的第一项规定为1,前几项依次是1, 1, 2, 1, 1, 2, 2, 2, 3, 1...,下面的例子阐释了每一项的计算过程,每一步中重复次数最多的后缀子列都标记在了方括号[]中 。
[1]
[1],[1]
1 , 1 ,[2]
1 , 1 , 2 ,[1]
1 , 1 , 2 ,[1],[1]
[1 , 1 , 2],[1 , 1 , 2]
1 , 1 , 2 , 1 , 1 ,[2],[2]
1 , 1 , 2 , 1 , 1 ,[2],[2],[2]
1 , 1 , 2 , 1 , 1 , 2 , 2 , 2 ,[3]
1 , 1 , 2 , 1 , 1 , 2 , 2 , 2 , 3 , 1
打印该数列的前1000项,每个数单独一行。
注:原题面的说明不甚明确,此处添加了准确的定义。
|