#P4994. 终于结束的起点
终于结束的起点
Description
广为人知的斐波拉契数列 是这么计算的
$$\mathrm{fib}(n)=\begin{cases} 0,& n=0 \\ 1,& n=1 \\ \mathrm{fib}(n-1) + \mathrm{fib}(n-2),& n>1 \end{cases}$$也就是 ,每一项都是前两项之和。
小 F 发现,如果把斐波拉契数列的每一项对任意大于 的正整数 取模的时候,数列都会产生循环。
当然,小 F 很快就明白了,因为 () 和 ( 最多只有 种取值,所以在 次计算后一定出现过循环。
甚至更一般地,我们可以证明,无论取什么模数 ,最终模 下的斐波拉契数列都会是 。
现在,给你一个模数 ,请你求出最小的 ,使得 $\mathrm{fib}(n) \bmod M = 0, \mathrm{fib}(n + 1) \bmod M = 1$。
Input Format
输入一行一个正整数 。
Output Format
输出一行一个正整数 。
2
3
6
24
Hint
样例 1 解释
斐波拉契数列为 ,在对 取模后结果为 。
我们可以发现,当 时,,也就是我们要求的 的最小值。
数据范围
对于 的数据,;
对于 的数据,;
对于 的数据,。
提示
如果你还不知道什么是取模 ,那我也很乐意告诉你,模运算是求整数除法得到的余数,也就是竖式除法最终「除不尽」的部分,也即
$$a \bmod M =k \iff a = bM + k\ (M > 0, 0 \leq k < M)$$其中 都是非负整数。
如果你使用 C / C++,你可以使用 % 来进行模运算。
如果你使用 Pascal,你可以使用 mod 来进行模运算。
京公网安备 11011102002149号