51nod 1013
计算30+31+...+3n%p3^0+3^1+...+3^n\%p30+31+...+3n%p
法1:ans=3n+1−12%pans=\frac{3^{n+1}-1}{2}\%pans=23n+1−1%p
=inv(2)∗(3n+1−1)=inv(2)*(3^{n+1}-1)=inv(2)∗(3n+1−1)
法2:
矩阵快速幂[Sn1]=[3101]∗[Sn−11]\begin{bmatrix}
S_n \\
1
\end{bmatrix}=\begin{bmatrix}
3 & 1 \\
0 & 1
\end{bmatrix}*\begin{bmatrix}
S_{n-1} \\
1
\end{bmatrix}[Sn1]=[3011]∗[Sn−11]
51nod 1035
题意是求一个倒数的最长循环节。
本题运用了无限循环小数的性质。
本来我的想法是高精除+floyd判圈。
根据性质,只要寻找到最小的k<=n,满足10k≡1(mod n)10^k ≡1 (mod\ n)10k≡1(mod n)k即为该n的循环节,暴力枚举k即可。
发现10=2*5,n中因子2和5对答案没有影响,为了加快速度,将因子2和5消去。
51nod 1040
∑gcd(i,N)=∑d∣Nd∗ϕ[Nd]\sum gcd(i, N) = \sum_{d|N}d*\phi [\frac{N}{d}]∑gcd(i,N)=d∣N∑d∗ϕ[dN]