51nod 1013
计算 3 0 + 3 1 + . . . + 3 n % p 3^0+3^1+...+3^n\%p 30+31+...+3n%p
法1:
a
n
s
=
3
n
+
1
−
1
2
%
p
ans=\frac{3^{n+1}-1}{2}\%p
ans=23n+1−1%p
=
i
n
v
(
2
)
∗
(
3
n
+
1
−
1
)
=inv(2)*(3^{n+1}-1)
=inv(2)∗(3n+1−1)
法2:
矩阵快速幂
[
S
n
1
]
=
[
3
1
0
1
]
∗
[
S
n
−
1
1
]
\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,满足
1
0
k
≡
1
(
m
o
d
n
)
10^k ≡1 (mod\ n)
10k≡1(mod n)k即为该n的循环节,暴力枚举k即可。
发现10=2*5,n中因子2和5对答案没有影响,为了加快速度,将因子2和5消去。
51nod 1040
∑ g c d ( i , N ) = ∑ d ∣ N d ∗ ϕ [ N d ] \sum gcd(i, N) = \sum_{d|N}d*\phi [\frac{N}{d}] ∑gcd(i,N)=d∣N∑d∗ϕ[dN]