DTOJ 4768. 数列

题意

一次偶然的机会,小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) A2k1=(1)k1Ak(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=Bk1+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} 1n2×105,1F(i)1018

Subtask 1(1pts): n ≤ 10 , F ( i ) ≤ 1 0 5 n \leq 10, F(i) \leq 10^{5} n10,F(i)105

Subtask 2(12pts): n ≤ 200 , F ( i ) ≤ 1 0 6 n \leq 200, F(i) \leq 10^{6} n200,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 n200

Subtask 5(33pts): 无特殊限制

题解

先考虑如何计算B:把式子看作 A k A_k Ak转移到 A 2 k − 1 A_{2k-1} A2k1 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=2Bk+(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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值