列表

详情


NC50579. Fibonacci 第 n 项

描述

大家都知道Fibonacci数列吧,
现在问题很简单,输入n和m,求

输入描述

输入n,m。

输出描述

输出

示例1

输入:

5 1000

输出:

5

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2023-06-24 05:17:46

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll m,i,j,k;

void mul(ll a[][2],ll b[][2],ll c[][2]){
    ll t[][2] = {{0,0},{0,0}};
    for( i=0;i<2;i++)
        for(j=0;j<2;j++)
            for(k=0;k<2;k++)
            t[i][j] = (t[i][j] + a[i][k]%m*b[k][j]%m)%m;
    for(i=0;i<2;i++)
        for(j=0;j<2;j++)
            c[i][j] = t[i][j];
}
int main(){
    ll res[2][2] = {{1,0},{0,1}}, a[2][2] = {{0,1},{1,1}}, n;
    cin>>n>>m;
    while(n){
        if(n&1)
            mul(res,a,res);
        mul(a,a,a);
        n/=2;
    }
    cout<<res[0][1]%m<<endl;
}

上一题