珠子=正三菱柱,三个面上面的数字$x$,必须满足$x\in [1,a]$,且珠子上面的数字的最大公约数要恰好为1。三棱柱可以选择翻转.
相邻的两个珠子必须不同。
两串项链如果能够经过旋转变成一样的,那么这两串项链就是相同的
好题!
首先算珠子种类,$s3$表示$3$个$\gcd=1$的个数,同理$s2,s1$。
$Burnside引理$
然后之后$Polya$里的$m=res$
这里矩阵快速幂就太大了。
如果$i-1$与$1$不同则$f(i)=f(i-1)(m-2)$
如果$i-1$与$1$相同则$i-2$与$1$不同。 $f(i)=f(i-2)(m-1)$
$x^2-(m-1)x-(m-2)=(x+1)(x-(m-1))=0$
$f(i)=a(-1)^i+b(m-1)^i,f(1)=0,f(2)=m(m-1)$
$f(1)$由于$1$与$1$相邻。所以为$0$。
然后$dfs$一遍搜因数并且一遍处理欧拉函数。
BZOJ上的数据经过加强, n 可能是 $10^9+7$ 的倍数(没有逆元),而最后要除以 $n$ ,所以需要一些特殊的技巧。
- $MOD=(1e9+7)^2$
- 此时要用快速乘
- 答案等于在模 $10^9+7$ 意义下 $\frac{sum}{1e9+7}$ 除以 $\frac{n}{1e9+7}$ 的结果。
- 需要$exgcd$求$6$在$(1e9+7)^2$的逆元。
代码
1 |
|