我正在研究一个有趣的置换周期问题。我们知道,任何数字排列都是由不相交的数字循环组成的。例如,假设我们的原始排列为12345。一个周期后,排列变为14235。因此1 ==> 1、2 ==> 3、3 ==> 4、4 == 2和5 ==> 5。所以我们的不相交的周期是1、234和5。假设我们像这样循环10 ^ 10次。最终结果是什么?例如,再经过一个周期,我们便达到了13425。我想尽可能有效地做到这一点。显然,由于存在模式,我们想进行模块化算术,但是如何用Java编写此代码?谢谢
这里的关键是对每个不相交的循环独立地使用您的模块化算术见解。
对于您的示例,您可以获得10 ^ 10个周期的结果
这只留下了[[查找
a^n
的计算时相同的策略。