置换应该不满足交换律吧,但为什么下面两种快速幂写法都过了
for(;k;k>>=1){
if(k&1){
for(int i=1;i<=n;i++) tmp[i]=pos[ans[i]];
for(int i=1;i<=n;i++) ans[i]=tmp[i];
}
for(int i=1;i<=n;i++) tmp[i]=pos[pos[i]];
for(int i=1;i<=n;i++) pos[i]=tmp[i];
}
for(;k;k>>=1){
if(k&1){
for(int i=1;i<=n;i++) tmp[i]=ans[pos[i]];
for(int i=1;i<=n;i++) ans[i]=tmp[i];
}
for(int i=1;i<=n;i++) tmp[i]=pos[pos[i]];
for(int i=1;i<=n;i++) pos[i]=tmp[i];
}