我居然没看题解瞎搞出来了? 题解: 不难想到找到每次减1的位置,然后减去它对最终答案的贡献. 假设有一个地方是\(x,1(mod~k)\) 那么减了1后就变成了\(x,0\). 然后可以推到\(x,0,x,x\). 可以看做以\(x,x\)为开头,做新的序列. 设y为x在mod k意义下的逆元,那么下次1的地方就是原斐波拉契序列中第一次出现y的位置. 如果没有逆元那就结束了. 原斐波拉契序列的非循环长度是\(O(k)\)级别的,这个可以通过随机序列第一次出现相同元素来理解,为在mo意义下应该是可…