本题一看就是数学题,只是本人较笨,一开始用两个数组硬模拟,导致~~
后来发现规律:如果1在第k次回到首位,则k为正解
证明如下:
一次操作后,f(x)= {2x,(x<=n);(x-n)*2-1,(n<x<=2n)}
=>f(x)=2x mod 2n+1
∵(a mod c)*b mod c=a*c mod b
∴f^k(x)=2^k*x mod 2n+1
当f^k(1)=2^k mod 2n+1=1时
对于任意m(1<=m<=2n)
都有f^k(m)=2^k*m mod 2n+1=m
……
本文介绍了一种解决特定数学循环问题的方法,通过分析题目特点,总结出规律,并给出了一段C语言实现代码,用于求解特定操作下数字返回初始位置所需的最小步骤。
本题一看就是数学题,只是本人较笨,一开始用两个数组硬模拟,导致~~
后来发现规律:如果1在第k次回到首位,则k为正解
证明如下:
一次操作后,f(x)= {2x,(x<=n);(x-n)*2-1,(n<x<=2n)}
=>f(x)=2x mod 2n+1
∵(a mod c)*b mod c=a*c mod b
∴f^k(x)=2^k*x mod 2n+1
当f^k(1)=2^k mod 2n+1=1时
对于任意m(1<=m<=2n)
都有f^k(m)=2^k*m mod 2n+1=m
……

被折叠的 条评论
为什么被折叠?
