Loading

P4461 [CQOI2018] 九连环 - 数学

题解

纯数学题。

\(f_i\) 为长度为 \(i\) 的环的操作次数,显然有 \(f_i=f_{i-1}+2f_{i-2}+1\)\(f_1=1,f_2=2\)。这是典型的非齐次线性递推。把它丢到 SymPy 里,用 rsolve_hyper([-2,-1,1],1,n) 求出其解的形式,然后通过 \(f_1,f_2\) 算出通项公式即可。

可以求得:

\[f_n=\frac{(-1)^{n+1}+2^{n+2}-3}{6} \]

直接 Python 即可。或者你想写个 fft 或者 karatsuba 也行?

代码

m=int(input())
while m>0:
    n=int(input())
    ans=0
    if n%2==0:
        ans=-1
    else:
        ans=1
    print((ans+pow(2,n+2)-3)//6)
    m-=1
posted @ 2022-01-02 21:58  Alan_Zhao_2007  阅读(84)  评论(0编辑  收藏  举报