解题思路
本题考查排列的环分解与字符串最小周期,答案是各环贡献的最小公倍数。
- 一次操作把位置 i 上的字符换成原串位置 pi 上的字符。反复操作等价于沿置换 p 的函数图移动。
- 将 p 拆成若干互不相交的环。对长度为 L 的环,环上字符形成一个长度为 L 的圆串;操作一次相当于把圆串旋转一格。
- 该环恢复原状的最小正旋转步数,等于圆串的最小周期 d:在整除 L 的因子中,找最小的 d,使环上字符串由长度为 d 的块重复 L/d 次得到。若环上字符全相同,则 d=1。
- 整串恢复当且仅当每个环都恢复,故总次数 k 为所有环的 d 的最小公倍数。输出 kmod(109+7)。注意 k 可能远超 64 位,需用高精度或质因数分解累乘取模。