Skip to content

Commit

Permalink
Update Readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
wisdompeak authored Mar 28, 2021
1 parent 329e46f commit 6607026
Showing 1 changed file with 3 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,6 @@ if N/2<=i<N, f(i) = i*2 - (N-1)
#### 解法3:
我们将之前的变化公式可以统一为:```f(i) = 2*i mod (N-1)```

假设连续操作k次,得到```f^k(i) = 2^k * i mod (N-1)```. 如果操作k次得到初始的状态,也就是```f^k(i)=i```,那么即有```2^k * i ≡ i mod (N-1)```。为了使这个式子对于任意的i恒成立,必须2^k能够被(N-1)整除余1. 所以我们只需要将k从1往上不断尝试即可。
假设连续操作k次,得到```f^k(i) = 2^k * i mod (N-1)```. 如果操作k次得到初始的状态,也就是```f^k(i)=i```,那么即有```2^k * i ≡ i (mod N-1)```。为了使这个式子对于任意的i恒成立,必须2^k能够被(N-1)整除余1. 所以我们只需要将k从1往上不断尝试即可。

需要注意的是,当k大于32时,2^k就已经超出了整形范围。所以我们每次将power再乘以2时,需要对(N-1)取余降低数值的大小,同时也不影响最终的结果。这是因为 ```x ≡ x % m (mod m)```

0 comments on commit 6607026

Please sign in to comment.