题目描述
广为人知的斐波拉契数列 fib(n) 是这么计算的
也就是 0, 1, 1, 2, 3, 5, 8, 13 ,每一项都是前两项之和。
小 F 发现,如果把斐波拉契数列的每一项对任意大于 1 的正整数 M 取模的时候,数列都会产生循环。
当然,小 F 很快就明白了,因为 (fib (n−1) mod M ) 和 (fib (n−2) mod M) 最多只有 M2种取值,所以在M2 次计算后一定出现过循环。
甚至更一般地,我们可以证明,无论取什么模数 M,最终模 M 下的斐波拉契数列都会是 0,1,⋯,0,1,⋯。
现在,给你一个模数 MM,请你求出最小的n>0,使得fib (n) mod M=0,fib (n+1) mod M=1。