将代码中表示修改次数最大值的数值+1
并将你表示嵌套的
φ(p)的数组的新空间赋值为1
代码大概是
CPPphimod[++level]=1;
一组hack数据(
来源)(祖传的)
in
CPP1 4 3 2
0
0 1 1
0 1 1
0 1 1
1 1 1
out
CPP1
原理:
我们修改一定次数之后值不变,原理是
ccc⋯modp=ccc⋯modφ(p)+φ(p)modp=ccc⋯modφ(φ(p))+φ(φ(p))modφ(p)+φ(p)modp,迭代的终点是
φ(φ(φ(⋯p⋯)))=1此时把下面的一部分幂塔丢掉后会剩下一个
ccc⋯mod1+1=0+1=1是常量,所以推到下面去整个成的常量
但是
扩展欧拉定理是
ab≡ab(modp)(b<φ(p))
ab≡abmodφ(p)+φ(p)(modp)(b>=φ(p))
所以我之前写的
ccc⋯mod1+1=0+1=1在
ccc⋯=0即
ai=0时会坠机,此时需要多加一个c变成1保证不坠机