1732 Fibonacci数列 2
1732 Fibonacci数列 2
在“1250 Fibonacci数列”中,我们求出了第n个Fibonacci数列的值。但是1250中,n<=109。现在,你的任务仍然是求出第n个Fibonacci数列的值,但是注意:n为整数,且1 <= n <= 100000000000000
输入有多组数据,每组数据占一行,为一个整数n(1 <= n <= 100000000000000)
输出若干行。每行输出第(对应的输入的)n个Fibonacci数(考虑到数会很大,mod 1000000007)
3
4
5
2
3
5
1 <= n <= 100000000000000
分类标签 Tags 点此展开
#include<cstdio> #include<cstring> #define m(s) memset(s,0,sizeof s) using namespace std; typedef long long ll; const ll mod=1e9+7;ll n; struct matrix{ll s[2][2];}A,F; matrix operator *(const matrix &a,const matrix &b){matrix c;for(int i=0;i<2;i++){for(int j=0;j<2;j++){c.s[i][j]=0;for(int k=0;k<2;k++){c.s[i][j]+=a.s[i][k]*b.s[k][j];c.s[i][j]%=mod;}}}return c; } //Fi=A^i*F0; matrix fpow(matrix a,ll p){matrix ans;for(int i=0;i<2;i++)for(int j=0;j<2;j++) ans.s[i][j]=(i==j);for(;p;p>>=1,a=a*a) if(p&1) ans=ans*a;return ans; } int main(){while(scanf("%lld",&n)==1){F.s[0][0]=1;F.s[0][1]=F.s[1][0]=F.s[1][1]=0; A.s[0][0]=A.s[0][1]=A.s[1][0]=1;A.s[1][1]=0;if(n>1) F=fpow(A,n-1)*F;printf("%lld\n",F.s[0][0]);}return 0; }
2016-09-17
#include<cstdio> #include<cstring> #define ll long long #ifdef unix #define LL "%lld" #else #define LL "%I64d" #endif using namespace std; const ll mod=1e9+7; struct node{ll a[2][2]; }ans,ss; ll n; inline node mul(node &a,node &b){node c;for(int i=0;i<2;i++){for(int j=0;j<2;j++){c.a[i][j]=0;for(int k=0;k<2;k++){c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mod;}}}return c; } void fpow(ll p){for(;p;p>>=1,ss=mul(ss,ss)) if(p&1) ans=mul(ans,ss); } int main(){while(scanf(LL,&n)==1){if(n==1){puts("1");continue;}if(n==2){puts("1");continue;}if(n==3){puts("2");continue;}ans.a[0][0]=ans.a[1][0]=1;ans.a[0][1]=ans.a[1][1]=0; ss.a[0][0]=ss.a[1][0]=ss.a[0][1]=1;ss.a[1][1]=0;n--;fpow(n);printf(LL,ans.a[0][0]);putchar('\n');}return 0; }
转载于:https://www.cnblogs.com/shenben/p/5879177.html
1732 Fibonacci数列 2相关推荐
- 求Fibonacci数列的前20项
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p112 习题4 2.编程求Fibonacci数列的前20项. Fibonacci数列的定义:F0=0, ...
- 【c语言】蓝桥杯入门训练 Fibonacci数列
[问题描述] Fibonacci数列的递推公式为:Fn=F(n-1)+F(n-2),其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. [输入格式] 输 ...
- fibonacci 数列及其应用
fibonacci 数列及其延展 fibonacci计算 fibonacci数列是指 0,1,1,2,3,5,8,13,21--这样自然数序列,即从第3项开始满足f(n)=f(n-1)+f(n-2): ...
- 算法设计与分析 Fibonacci数列问题的词典法(动态规划:词典)
Fibonacci数列问题的词典法 Fibonacci数列问题的词典法 #include<stdio.h> #pragma warning (disabled:4996) #define ...
- 蓝桥杯基础训练——Fibonacci数列
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...
- 入门训练 Fibonacci数列-python实现
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大 ...
- hdu 4639 2013多校第四场 hehe Fibonacci 数列,组合计数,字符串处理
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4639 题目思路: 首先我们取出所有he这样的东西,考察连续的k个"he"串,通过找 ...
- Fibonacci数列时间复杂度之美妙
Fibonacci数列: fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2) 上课老师出了一道题,求下列函数的时间复杂度: int fib(int d) {if (d ...
- Fibonacci数列 递归 杨辉三角 动态规划
这篇帖子主要是介绍 递归 与 动态规划 之间是如何转换的, 什么是递归估计不用多说,那么什么是 动态规划呢? 我理解的动态规划就是: 能够避免 直接 递归实现 中出现的重复运算的技术就是动态规划. 这 ...
最新文章
- 微信小程序左到右联动
- IO:同步,异步,阻塞,非阻塞
- EOS 源代码解读 (4)交易数据结构
- mysql explain理解
- C语言和设计模式(装饰模式)
- PHPExcel 在LINUX环境中导出乱码的问题解决
- python变量使用的三个步骤_Python 动态生成多个变量
- python对接60码平台
- estore简版商城思路
- 到处都在说直播连麦技术,它们真的能连吗?
- 切换svn地址报错issuer is not trusted
- 计算几何03_三次参数样条曲线与Cardinal曲线
- 老虎的屁股摸不得,宝宝的屁屁一样碰不得!
- 工厂制造业ai人工智能应用_人工智能与金融服务业转型的未来
- 问卷调查系统的设计与实现【源码:文档:教程】
- 《鱿鱼游戏》开场了|谁才是影评人的御用写作工具
- 大文件传输软件-镭速——MAC版分享
- 为什么网络进不去别的计算机,win7在网上邻居上看不到别的电脑如何解决
- esp32 spi 驱动 oled 屏显示来自 PC 的画面
- android 闹钟不响,为什么我写的Android闹钟到时间时却不会响