枚举位移肯定超时,对于一个位移i.我们须要的是它的循环个数,也就是gcd(i,n),gcd(i,n)个数肯定不会非常多,由于等价于n的约数的个数. 所以我们枚举n的约数.对于一个约数k,也就是循环个数为n/k这种个数有phi[k]种,证明网上有非常多. 所以答案就是 phi[k]*(pow(n,n/k)) (k是n的全部约数) 因为约数会非常大所以不能打表,仅仅能单个算. 再因为最后要除以n,假设做除法就不能直接取模,所以我们在算每一次pow(n,n/k)的时候,都少乘一个n,这样就相当于除法了…