zcmu2073: #6291. 小L进阶的斐波那契数列游戏

原题来自Loj的6291

题目要求就是求斐波那契数列的前n项平方和对mod  取模的值

刚开始 以为要求fib循环节,后来发现计算是有规律的

根据题目要求可发现题目所求值实际上是fib【n】*fib【n-1】的值%mod

下面是用快速求取模后fib值的ac代码(核心思路就是矩阵求fib)

#include
using namespace std;
typedef long long ll;
const int mod=1e9+7;

pair operator *(const pair &a,const pair &b)
{
    return make_pair((a.first*b.first+a.second*b.second)%mod,
                     (a.first*b.second+a.second*b.first+a.second*b.second)%mod);
}
ll F(ll y)
{
    pair ans=make_pair(1,0),x=make_pair(0,1);
    while(y)
    {
        if(y&1) ans=ans*x;
        x=x*x;
        y/=2;
    }
    return ans.first+ans.second;
}

int main()
{
    ll n;
    cin>>n;
    cout<


你可能感兴趣的:(ZCMU)