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
Written by Alan_Zhao