题意
一次偶然的机会,小C发现了两个无限长度的数列 。这两个数列满足如下关系:
A
1
=
1
A_{1}=1
A1=1
A
2
k
=
−
A
k
(
k
>
0
)
A_{2 k}=-A_{k}(k>0)
A2k=−Ak(k>0)
A
2
k
−
1
=
(
−
1
)
k
−
1
A
k
(
k
>
1
)
A_{2 k-1}=(-1)^{k-1} A_{k}(k>1)
A2k−1=(−1)k−1Ak(k>1)
B
1
=
1
B_{1}=1
B1=1
B
k
=
B
k
−
1
+
A
k
(
k
>
1
)
B_{k}=B_{k-1}+A_{k}(k>1)
Bk=Bk−1+Ak(k>1)
现在她想研究一下这个数列的性质。她构造了一个矩阵
[ B F ( gcd ( 1 , 1 ) ) B F ( gcd ( 1 , 2 ) ) ⋯ B F ( gcd ( 1 , n ) ) B F ( gcd ( 2 , 1 ) ) B F ( gcd ( 2 , 2 ) ) ⋯ B F ( gcd ( 2 , n ) ) ⋮ ⋮ ⋱ ⋮ B F ( gcd ( n , 1 ) ) B F ( gcd ( n , 2 ) ) ⋯ B F ( gcd ( n , n ) ) ] \left[\begin{array}{cccc}B_{F(\operatorname{gcd}(1,1))} & B_{F(\operatorname{gcd}(1,2))} & \cdots & \left.B_{F(\operatorname{gcd}(1, n)}\right) \\ B_{F(\operatorname{gcd}(2,1))} & B_{F(\operatorname{gcd}(2,2))} & \cdots & B_{F(\operatorname{gcd}(2, n))} \\ \vdots & \vdots & \ddots & \vdots \\ B_{F(\operatorname{gcd}(n, 1))} & B_{F(\operatorname{gcd}(n, 2))} & \cdots & B_{F(\operatorname{gcd}(n, n))}\end{array}\right] ⎣⎢⎢⎢⎡BF(gcd(1,1))BF(gcd(2,1))⋮BF(gcd(n,1))BF(gcd(1,2))BF(gcd(2,2))⋮BF(gcd(n,2))⋯⋯⋱⋯BF(gcd(1,n))BF(gcd(2,n))⋮BF(gcd(n,n))⎦⎥⎥⎥⎤
该矩阵的第 i i i 行第 j j j 列的值为 B F ( gcd ( i , j ) ) \left.B_{F(\operatorname{gcd}(i, j)}\right) BF(gcd(i,j)),其中 F ( x ) F(x) F(x) 为小 C 选定的一个数论函数。小C认为,求出这个矩阵的行列式就可以获得 B B B 数列的一些性质。
小C想知道,上述矩阵的行列式是多少?小C当然会算了,但是她想考考你。
容易发现上面只用到了 F ( 1 ) , F ( 2 ) , ⋯ , F ( n ) F(1), F(2), \cdots, F(n) F(1),F(2),⋯,F(n) ,因此小C只打算给你 F ( 1 ) , F ( 2 ) , ⋯ , F ( n ) F(1), F(2), \cdots, F(n) F(1),F(2),⋯,F(n) 。
对于100%的数据, 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ F ( i ) ≤ 1 0 18 1 \leq n \leq 2 \times 10^{5}, 1 \leq F(i) \leq 10^{18} 1≤n≤2×105,1≤F(i)≤1018
Subtask 1(1pts): n ≤ 10 , F ( i ) ≤ 1 0 5 n \leq 10, F(i) \leq 10^{5} n≤10,F(i)≤105
Subtask 2(12pts): n ≤ 200 , F ( i ) ≤ 1 0 6 n \leq 200, F(i) \leq 10^{6} n≤200,F(i)≤106
Subtask 3(27pts): F ( i ) ≤ 1 0 6 F(i) \leq 10^{6} F(i)≤106
Subtask 4(27pts): n ≤ 200 n \le 200 n≤200
Subtask 5(33pts): 无特殊限制
题解
先考虑如何计算B:把式子看作 A k A_k Ak转移到 A 2 k − 1 A_{2k-1} A2k−1和 A 2 k A_{2k} A2k,观察递推式发现在转移2次的意义下操作是循环的,考虑相邻四个数:容易发现 4 A k + 1 = − A 4 k + 2 , A 4 k + 3 = A 4 k + 4 4A_{k+1}=-A_{4k+2},A_{4k+3}=A_{4k+4} 4Ak+1=−A4k+2,A4k+3=A4k+4,于是 B 4 k = 2 ∗ B k + ( k % 2 ) ∗ A k B_{4k}=2*B_k+(k\%2)*A_k B4k=2∗Bk+(k%2)∗Ak。
考虑如何计算行列式,直接消发现难以找到规律,对于gcd问题考虑莫比乌斯反演,设 f n = B F n , f n = ∑ g d f_n=B_{F_n},f_n=\sum{g_d} fn=BFn,fn=∑gd,则 g n = ∑ f d m u [ d ] g_n=\sum{f_dmu[d]} gn=∑fdmu[d],把矩阵中的 f f f换成 g g g,就容易发现第 i i i 行第 j j j 列的值为 g [ i ] g[i] g[i]。