AcWing 1303. 斐波那契前 n 项和

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 1303. 斐波那契前 n 项和相关的知识,希望对你有一定的参考价值。

AcWing 1303. 斐波那契前 n 项和

题意:

在这里插入图片描述

题解:

这个题解分析的太到位了
在这里插入图片描述

代码:

#include<iostream>
#include<cstring>

#define ll long long

using namespace std;

const int N=3;

int n,m;
ll f1[N][N]={{1,1,1}};
ll A[N][N]={
    {0,1,0},
    {1,1,1},
    {0,0,1}
};

void mul(ll a[N][N],ll b[N][N])
{
    ll c[N][N]={0};
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            for(int k=0;k<3;k++)
                c[i][j]=(c[i][j]+a[i][k]*b[k][j]%m)%m;
    memcpy(a,c,sizeof c);
}

void quick_pow(ll a[N][N],int k)
{
    ll E[N][N]={    //单位阵
        {1,0,0},
        {0,1,0},
        {0,0,1}
    };
    while(k)
    {
        if(k&1) mul(E,a);
        mul(a,a);
        k>>=1;
    }
    memcpy(a,E,sizeof E);
}

int main()
{
    cin>>n>>m;
    
    quick_pow(A,n-1);
    mul(f1,A);
    
    cout<<f1[0][2]<<endl;
    
    return 0;
}

以上是关于AcWing 1303. 斐波那契前 n 项和的主要内容,如果未能解决你的问题,请参考以下文章

acwing1304. 佳佳的斐波那契

如何用C语言输出斐波那契数列的前n项

斐波那契数列前n项和公式是啥?

请问斐波那契数列的前n项和公式是啥?

c语言.计算斐波那契数列的前n项和(s),四种方法?

c语言中,。编写程序求斐波那契数列的第n项和前n项之和。大家看好是【第】n项的值和前n项的合= =。