首页 > 其他分享 >903 斐波那契数列2

903 斐波那契数列2

时间:2025-01-15 18:55:25浏览次数:1  
标签:903 数列 int long 斐波 那契

// 903 斐波那契数列2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
http://oj.daimayuan.top/course/22/problem/1045

斐波那契数列指的是以下数列: 1,1,2,3,5,8,...,从第三个数开始,每个数是前两个数的和。

请问这个数列的第 n项模 109+7是多少。

输入格式
第一行一个整数 n。

输出格式
一行一个数表示答案。

样例输入
5
样例输出
5
数据范围
对于 100%的数据,保证 1≤n≤109。
*/ 

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>


using namespace std;

const int N = 2;
int P = 1000000007;
int n = 2, k;
long long  f[N + 1], a[N + 1][N + 1];
 

void aa() {
	long long w[N + 1][N + 1];
	memset(w, 0, sizeof w);
	for (int i = 1; i <= n; i++)
		for (int k = 1; k <= n; k++)
			if (a[i][k])
				for (int j = 1; j <= n; j++)
					if (a[k][j])
						w[i][j] += a[i][k] * a[k][j], w[i][j] %= P;
	memcpy(a, w, sizeof a);
}


void fa() {
	long long w[N + 1];
	memset(w, 0, sizeof w);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			w[i] += f[j] * a[j][i], w[i] %= P;
	memcpy(f, w, sizeof f);
}

void matrixpow(long long k) {
	for (; k; k >>= 1) {
		if (k & 1)
			fa();
		aa();
	}
}


int main()
{
	scanf("%d", &k);
	f[1] = 0; f[2] = 1;
	a[1][1] = 0; a[1][2] = 1;
	a[2][1] = 1; a[2][2] = 1;
	matrixpow(k - 1);
	printf("%lld\n", f[2]);

	return 0;
}

标签:903,数列,int,long,斐波,那契
From: https://www.cnblogs.com/itdef/p/18673606

相关文章

  • 偶斐波那契数列性质与欧拉计划第2题 Properties of Fibonacci numbers and Project Eu
    Problem2EvenFibonaccinumbersEachnewtermintheFibonaccisequenceisgeneratedbyaddingtheprevioustwoterms.Bystartingwith1and2,thefirst10termswillbe:1,2,3,5,8,13,21,34,55,89,…ByconsideringthetermsintheFibonacci......
  • 算法-泰波那契
    力扣题目链接:1137.第N个泰波那契数-力扣(LeetCode)泰波那契序列 Tn 定义如下: T0 =0,T1 =1,T2 =1,且在n>=0 的条件下Tn+3 =Tn +Tn+1 +Tn+2给你整数 n,请返回第n个泰波那契数 Tn 的值。示例1:输入:n=4输出:4解释:T_3=0+1+1=2T_4......
  • 斐波那契与公约数
    斐波那契与公约数设斐波那契数列第\(i\)项为\(f_i\)。\[f_i=\begin{cases}1&(i\leq2)\\f_{i-1}+f_{i-2}&(i>2)\end{cases}\]Lemma1\[\gcd(f_i,f_{i+1})=1\]Proof1数学归纳法。当\(i=1\)时,\(\gcd(f_1,f_2)=\gcd(1,1)=1\)。设\(f_k=a,f_{k+1}=b\),则有\......
  • KTH5774 : 3D 摇杆/操纵杆霍尔位置传感器芯片,可替代mlx90333
    KTH5774是一款摇杆、操纵杆专用的3D霍尔磁感应芯片,主要面向对线性度和可靠性要求严格的应用场景。KTH5774基于3D霍尔技术,内部分别集成了X轴、Y轴和Z轴三个独立的霍尔元件,能够通过测量和处理磁通密度矢量的三个空间分量(即BX、BY和B......
  • 数据结构复习 (顺序查找,对半查找,斐波那契查找,插值查找,分块查找)
    查找(检索):定义:从给定的数据中找到对应的K1,顺序查找:O(n)的从前向后的遍历2,对半查找,要求有序从中间开始查找,每次检查中间的是否正确,不正确就根据性质去左边or右边找2.1对半插入排序在找位置的时候是logn去找,但是最后需要换位置排序之后仍然是O()N^2)对同一序列分别......
  • 矩阵快速幂——斐波那契数列进一步优化
    快速幂优化矩阵幂、乘法对于一般的矩阵计算有\(A_{m,n}*B_{n,p}=C_{m,p}\),其中作为乘积因子的两个矩阵必须满足前因子列数与后因子行数相同积的行数等于前因子的行数,列数等于后因子的列数,任意的\(c_{i,j}\)可由定义的计算得出\(c_{i,j}=\sum_{k=0}^{n}a_{i,k}*b_{k,j}\)......
  • C中如何实现斐波那契数列的迭代和递归算法?
    在C语言中实现斐波那契数列的迭代和递归算法是学习编程和算法设计的重要部分。本文将详细介绍这两种方法的实现原理,并提供具体的代码示例。递归算法递归算法是通过函数调用自身来解决问题的一种方法。对于斐波那契数列,递归算法的实现基于其定义:第n项等于前两项之和。递归算法......
  • P1306 斐波那契公约数
    P1306斐波那契公约数对于Fibonacci数列:\[f_i=\begin{cases}[i=1]&i\leq1\\f_{i-1}+f_{i-2}&i\gt1\end{cases}\]请求出\(f_n\)与\(f_m\)的最大公约数,即\(\gcd(f_n,f_m)\)。数据规模与约定对于\(100\%\)的数据,保证\(1\l......
  • 微软edge浏览器 v131.0.2903.99便携版
    点击上方蓝字睿共享关注我前言MicrosoftEdge浏览器是个新浏览器,它用起来很简单,界面也很清爽。这个浏览器功能特别多,里面还带了微软的小助手Contana,能帮用户做不少贴心的事儿。它支持安装各种小工具(插件),还能在网页上做标记。而且,管理网页标签也变得很容易,不用离开当前看的网页,就......
  • 斐波那契查找算法
    1,什么是斐波那契查找算法?    斐波那契查找算法(FibonacciSearch)是一种基于斐波那契数列的搜索算法。与二分查找算法相比,斐波那契查找更适用于没有直接索引访问的数据结构(如链表)。它通过使用斐波那契数列来逐步缩小搜索范围,从而找到目标元素的位置。斐波那契数列斐......