数论出题组比赛用题:数列

T3:数列

思考难度:提高?

代码难度:提高?

算法0:暴力

实际得分:0

算法1:

考虑x=y=1x=y=1的情况,显然有an=an1+an2a_n=a_{n-1}+a_{n-2}(废话),故

an×an+1a_n\times a_{n+1}

=an×(an+an1)=a_n\times (a_n+a_{n-1})

=an2+an1×an=a_n^2+a_{n-1}\times a_n

=an2+an12+an2×an1=a_n^2+a_{n-1}^2+a_{n-2}\times a_{n-1}

=...+a22+a1×a2=...+a_2^2+a_1\times a_2

=...+a22+a12+a1×(a2a1)=...+a_2^2+a_1^2+a_1\times (a_2-a_1)

ans=an×an+1a1×(a2a1)ans=a_n\times a_{n+1}-a_1\times (a_2-a_1)

实际得分:20分

算法2:

注意到

an2=(x×an1+y×an2)2a_n^2=(x\times a_{n-1}+y\times a_{n-2})^2

=x2×an12+y2×an22+2xy×an1×an2=x^2\times a_{n-1}^2+y^2\times a_{n-2}^2+2xy\times a_{n-1}\times a_{n-2}

=x2×an12+y2×an22+2xy×an2×(x×an2+y×an3)=x^2\times a_{n-1}^2+y^2\times a_{n-2}^2+2xy\times a_{n-2}\times (x\times a_{n-2}+y\times a_{n-3})

=x2×an12+y2×an22+2xy×(x×an22+y×an2×an3)=x^2\times a_{n-1}^2+y^2\times a_{n-2}^2+2xy\times (x\times a_{n-2}^2+y\times a_{n-2}\times a_{n-3})

an2a_n^2可以由an12,an22,an1×an2a_{n-1}^2,a_{n-2}^2,a_{n-1}\times a_{n-2}转移过来,而an1×an2a_{n-1}\times a_{n-2}可以由an12,an2×an3a_{n-1}^2,a_{n-2}\times a_{n-3}转移过来。

矩阵加速即可。

实际得分:100

posted @ 2019-01-01 20:30  vercont  阅读(212)  评论(0编辑  收藏  举报