2020牛客NOIP赛前集训提高第四场C-斐波(矩阵快速幂,数学)

题目链接

Problem Statement

在这里插入图片描述

Solution

  • 简洁解释一下题意,相信很多人都是卡在了题意理解上
  • 我们要求:
    • 题目所给 [ l , r ] [l,r] [l,r]区间
    • 的任意一个子区间
    • 中的数组成的集合
    • 的子集合中元素的和
    • 作为下标的斐波那契数
    • 的平方和
    • 之和
  • 所给 f f f含义是
  • f ( f( f(集合 ) ) )=所有子集的数字和作为下标的斐波那契数的平方和
  • 我们一层一层来做

Subtask 1:

区间的数字和作为下标的斐波那契数

  • 复习: f i b o n a c c i fibonacci fibonacci矩阵
  • 区间的数字和作为下标的斐波那契数

T = ∣ 1 1 1 0 ∣ \qquad\qquad\qquad\quad T=\begin{vmatrix}1&1\\1&0\end{vmatrix} T=1110

∴ f i b a + b = T a + b = T a ∗ T b = f i b a ∗ f i b b \therefore fib_{a+b}=T^{a+b}=T^a*T^b=fib_a*fib_b fiba+b=Ta+b=TaTb=fibafibb

Subtask 2:

区间的数字和作为下标的斐波那契数的平方

  • 这是一个常见套路,当然你也可以直接算,但也可以改一改矩阵

f i 2 = ( f i − 1 + f i − 2 ) 2 = f i − 1 2 + 2 f i − 1 f i − 2 + f i − 2 2 f_i^2=(f_{i-1}+f_{i-2})^2=f_{i-1}^2+2f_{i-1}f_{i-2}+f_{i-2}^2 fi2=(fi1+fi2)2=fi12+2fi1fi2+fi22

头尾两项好维护,关键是中间的二倍积

2 f i f i − 1 = 2 ( f i − 1 + f i − 2 ) f i − 1 = 2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值