【崩坏:星穹铁道】 引航罗盘转矩阵求通解

问题很简单,是三种转动方式分别转几次。(转动方式是指切换键切换的三个转动方式)

分析:
重点部分用红色表示,赶时间可以只看红字。有大部分内容属于推导过程,便于理解
注意到罗盘转动具有周期性,考虑以模运算表示。不妨记天轴位于最左侧为零,以a次一圈的次数a为模(经推算,若有m个亮起来的星位,则a=6/m),天轴位置就可以用余数表示。
这时候有聪明的b友就要问了:唉240°你怎么解决啊,你傻眼了吧,rnm,退钱!
你先别急,我们稍加思索就会发现,顺时针240°实际上与逆时针120°是等价的,所以当成逆时针120°即可。
设内,中,外圈的亮起的星位数量分别为m1,m2,m3,那么对应的模分别为6/m1,6/m2,6/m3,设初始天轴位置余数表示为r1,r2,r3,称内中外三圈为R1,R2,R3。三种转动方式分别转动p1,p2,p3次后,使得天轴对齐,即对a取模为0。
先假设转向皆为顺时针:
考虑最简单的罗盘,即每个转动方式只控制一圈,我们不难想到只要列出:
6/m1|r1+p1
6/m2|r2+p2
6/m3|r3+p3
(其中pi与圈Ri的转动次数对应)
即可表达天轴对齐的关系。
而对于相对复杂的,可能会列出:
6/m1|r1+p2
6/m2|r2+p2+p3
6/m3|r3+p3+p1
(什么?你问我p和r怎么对应的?我其实是瞎写的ヾ(•ω•`)o)
类似这样的关系式,但这式子可太丑了。
数学作为一门优雅的艺术,是否有更优雅的表达方式呢——当然。
我们不难联想到使用0和1表示是否收顺时针转动影响,再使用一个向量(p1,p2,p3)表示三种转动方式对应的转动次数,而之所以使用向量,是因为考虑到向量点积可以很好的表示这种先乘再加的关系。
再考虑上逆时针
我们还可以用-1表示逆时针转动,用Bi=(b1,b2,b3)表示第i圈是否受转动影响,其元素为1或0或-1。例如B1=(0,1,0)表示第一圈只受到第二个转动方式影响,顺时针。
最后表达式为
6/mi|ri+(p1,p2,p3)·Bi
不难发现我们可以知道(p1,p2,p3)·Bi所在的剩余类,即
6/mi-ri%(6/mi)≡(p1,p2,p3)·Bi mod 6/mi(%表示取模运算)
显然,这是一个不定方程,我们引入参数ki(ki∈Z),转化为
(p1,p2,p3)·Bi=6/mi-ri%(6/mi)+6/mi*ki
之后便是解多元不定方程,可以使用矩阵解出通解,这里不多赘述。若不想求出一般解,可以选择试数取特解。由周期性易得最后通解的一次项系数是对应转动方式的亮起的星位的最小公倍数。
PS:水平有限,一定有更优解法,奈何实力不足。恳请大佬指正,或提出更好的解法 :3