1732 Fibonacci数列 2

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond

题解

题目描述 Description

在“1250 Fibonacci数列”中,我们求出了第n个Fibonacci数列的值。但是1250中,n<=109。现在,你的任务仍然是求出第n个Fibonacci数列的值,但是注意:n为整数,且1 <= n <= 100000000000000

输入描述 Input Description

输入有多组数据,每组数据占一行,为一个整数n(1 <= n <= 100000000000000)

输出描述 Output Description

输出若干行。每行输出第(对应的输入的)n个Fibonacci数(考虑到数会很大,mod 1000000007)

样例输入 Sample Input

3
4
5

样例输出 Sample Output

2
3
5

数据范围及提示 Data Size & Hint

1 <= n <= 100000000000000

分类标签 Tags 点此展开

矩阵乘法 数论
2017-03-24
#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

AC代码:
#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相关推荐

  1. 求Fibonacci数列的前20项

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p112 习题4 2.编程求Fibonacci数列的前20项. Fibonacci数列的定义:F0=0, ...

  2. 【c语言】蓝桥杯入门训练 Fibonacci数列

    [问题描述] Fibonacci数列的递推公式为:Fn=F(n-1)+F(n-2),其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. [输入格式] 输 ...

  3. fibonacci 数列及其应用

    fibonacci 数列及其延展 fibonacci计算 fibonacci数列是指 0,1,1,2,3,5,8,13,21--这样自然数序列,即从第3项开始满足f(n)=f(n-1)+f(n-2): ...

  4. 算法设计与分析 Fibonacci数列问题的词典法(动态规划:词典)

    Fibonacci数列问题的词典法 Fibonacci数列问题的词典法 #include<stdio.h> #pragma warning (disabled:4996) #define ...

  5. 蓝桥杯基础训练——Fibonacci数列

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...

  6. 入门训练 Fibonacci数列-python实现

    入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大 ...

  7. hdu 4639 2013多校第四场 hehe Fibonacci 数列,组合计数,字符串处理

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4639 题目思路: 首先我们取出所有he这样的东西,考察连续的k个"he"串,通过找 ...

  8. Fibonacci数列时间复杂度之美妙

    Fibonacci数列: fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2) 上课老师出了一道题,求下列函数的时间复杂度: int fib(int d) {if (d ...

  9. Fibonacci数列 递归 杨辉三角 动态规划

    这篇帖子主要是介绍 递归 与 动态规划 之间是如何转换的, 什么是递归估计不用多说,那么什么是 动态规划呢? 我理解的动态规划就是: 能够避免 直接 递归实现 中出现的重复运算的技术就是动态规划. 这 ...

最新文章

  1. 微信小程序左到右联动
  2. IO:同步,异步,阻塞,非阻塞
  3. EOS 源代码解读 (4)交易数据结构
  4. mysql explain理解
  5. C语言和设计模式(装饰模式)
  6. PHPExcel 在LINUX环境中导出乱码的问题解决
  7. python变量使用的三个步骤_Python 动态生成多个变量
  8. python对接60码平台
  9. estore简版商城思路
  10. 到处都在说直播连麦技术,它们真的能连吗?
  11. 切换svn地址报错issuer is not trusted
  12. 计算几何03_三次参数样条曲线与Cardinal曲线
  13. 老虎的屁股摸不得,宝宝的屁屁一样碰不得!
  14. 工厂制造业ai人工智能应用_人工智能与金融服务业转型的未来
  15. 问卷调查系统的设计与实现【源码:文档:教程】
  16. 《鱿鱼游戏》开场了|谁才是影评人的御用写作工具
  17. 大文件传输软件-镭速——MAC版分享
  18. 为什么网络进不去别的计算机,win7在网上邻居上看不到别的电脑如何解决
  19. esp32 spi 驱动 oled 屏显示来自 PC 的画面
  20. android 闹钟不响,为什么我写的Android闹钟到时间时却不会响

热门文章

  1. 软件开发人员能力模型
  2. 如何配置三层交换机创建VLAN 2
  3. 云上护航服务—保障云上的尖峰时刻
  4. Web Bundler CheatSheet, 选择合适的构建打包工具
  5. [转]EXP-00056: 遇到 ORACLE 错误 31600
  6. 【转】老程序猿给新程序猿的13点建议
  7. Vmware VsPhere下的VM如何安装Hyper-v服务
  8. 用户一亿的网易新闻客户端质量如何?
  9. 那些年php编程犯过的错(1) -- 字符串相等
  10. minicom HOWTO