题解中提到 对于询问的一段区间 可以由小到大尝试除以它的因数 如果判定是循环节则更新len
while(len != 1)
{
ys[++tt] = nxt[len];
len = len/nxt[len];
}
len = r-l+1;
for(int j = 1;j <= tt;j++)
{
int t = len/ys[j];
if(check(l,r-t,l+t,r) == 1)
{
len = t;
}
}
printf("%d\n",len);
如何证明 len=t 操作不会丢失最优解,,,举个例子 长度21 我发现1-7是他的循环节 那如果最小循环节是3就出不来了 求助