1358 浮波那契
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

 收藏
 关注

TengBieBie已经学习了很多关于斐波那切数列的性质,所以他感到一些些厌烦。现在他遇到了一个新的数列,这个数列叫做Float-Bonacci。这里有一个关于Float-Bonacci的定义。

对于一个具体的n,TengBieBie想要快速计算FB(n).

但是TengBieBie对FB的了解非常少,所以他向你求助。

你的任务是计算FB(n).FB(n)可能非常大,请输出FB(n)%1,000,000,007 (1e9+7)即可。

Input
输入共一行,在一行中给出一个整数n (1<=n<=1,000,000,000)。
Output
对于每一个n,在一行中输出FB(n)%1,000,000,007 (1e9+7)。
Input示例
5
Output示例
2

令F[n] = F[n-10]+F[n-34],之后构造个34*34的矩阵

#include<stdio.h>
#include<string.h>
#define mod 1000000007
#define LL long long
typedef struct Matrix
{LL i, j, k, a[55][55];void init(){memset(a, 0, sizeof(a));a[1][10] = a[1][34] = 1;for(i=1;i<=33;i++)a[i+1][i] = 1;}void unit(){memset(a, 0, sizeof(a));for(i=1;i<=34;i++)a[i][i] = 1;}Matrix operator * (const Matrix &b) const{Matrix x;LL i, j, k;memset(x.a, 0, sizeof(x.a));for(i=1;i<=34;i++){for(j=1;j<=34;j++){for(k=1;k<=34;k++)x.a[i][j] = (x.a[i][j]+(a[i][k]*b.a[k][j])%mod)%mod;}}return x;}
}Matrix;
Matrix Jz;
LL a[46];
Matrix Powto(Matrix a, LL b)
{Matrix E;E.unit();while(b){if(b%2==1)  E = E*a, b--;else  a = a*a, b /= 2;}return E;
}
int main(void)
{LL n, i, ans;for(i=1;i<=40;i++)a[i] = 1;scanf("%lld", &n);if(n<=4)printf("1\n");else{n *= 10;Jz.init();Jz = Powto(Jz, n-40);ans = 0;for(i=1;i<=34;i++)ans = (ans+(Jz.a[1][i]*a[i])%mod)%mod;printf("%lld\n", ans);}return 0;
}

51nod-1358:浮波那契相关推荐

  1. 51Nod 1242 斐波那契数列的第N项

    斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, 34, ...

  2. 51nod 1355 斐波那契的最小公倍数

    Upd2019.4.19 yy了一个新的做法 新的写法 之前的东西 链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1355 很神 ...

  3. 51nod1355-斐波那契的最小公倍数【min-max容斥】

    正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1355 题目大意 定义fif_ifi​表示斐波那契的第iii项,给出一个大 ...

  4. 【51nod】2059 上台阶 easy

    原题链接 [51nod]上台阶 easy 思维点: 小瓜一次只可以上1级台阶或者2级台阶,那么上n级台阶的最后一步,必定是选择上1级台阶或者上2级台阶. 所以 上n级台阶的可能选法 = 上 n - 1 ...

  5. 1355 斐波那契的最小公倍数

    1355 斐波那契的最小公倍数 原题连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1355 之前看唐老师题解学习 ...

  6. 矩阵快速幂(求斐波那契数列)

    因为Fib(n)至于最近的俩个序列有关(及Fib(n-1)和Fib(n-2)),所以我们保存最近的那俩个就行了. 设f(n)表示一个1*2的矩阵,f(n)=[Fib(n),Fib(n+1)],可以看成 ...

  7. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

  8. java 斐波拉_Java实现斐波那契数列

    斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n&g ...

  9. java 二分搜索获得大于目标数的第一位_程序员常用查找算法(顺序、二分、插值、分块、斐波那契)...

    顺序查找 基本思想 属于线性查找和无序查找,从一端开始顺序扫描,直到找到与目标值value相等的元素. 这是最基本的查找方法,也是时间复杂度最高的查找算法. 在数据过多时,这种方法并不适用. 代码实现 ...

最新文章

  1. 600分钟搞定Python入门到实战
  2. magento网站建设_外贸网站建设指南,告诉你建站系统怎么选择
  3. cobaltstrike生成一个原生c,然后利用xor加密解密执行
  4. python android自动化_python在Android下的自动化测试用法
  5. JAVA不能满屏_java – 全屏幕视频,不拉伸视频
  6. Ignite Compute helloworld-分布式计算
  7. linux java echo 3,Linux常用命令13 - echo
  8. OpenShift 4 - 提升客户端访问 API Server 安全
  9. FFmpeg学习3:播放音频
  10. 【php】使用phpdbg来调试php程序
  11. mysql中如何查询最近24小时、top n查询
  12. VS2012+Win7网站发布详细步骤
  13. 【栈与队列】剑指offer:两个栈模拟队列
  14. [转]asp 无法连接 access,出现 -2147467259 未指定的错误
  15. VMware12虚拟机安装
  16. unity3d安装IOS Support失败原因,完美解决。
  17. 2021/10/15 考试总结
  18. 直播六脉神剑,练好这几招才能行走江湖
  19. 《科研诚信与学术规范》
  20. linux系统连接不上wifi

热门文章

  1. python软件下载对电脑配置要求-python3批量统计用户电脑配置
  2. python是干什么用的-python是做什么用的 python有什么用 - 驱动管家
  3. python自动化测试-【自动化测试】Python - unittest单元测试框架
  4. python是什么专业学的-什么样的人适合学Python,应该怎么学?
  5. lda主题模型困惑度_主题模型(三):LDA主题个数选择
  6. python的最大优势之一是有理数吗_Python里的有理数类(精度高,可计算)
  7. 遍历矩阵每一行穷举_六十三---矩阵中的路径
  8. 我的世界服务器氪金系统怎么做,[经济]PPRMB销售系统 1.3.1 —— 地图扫码自动到账,氪金系统如此简单[全版本]...
  9. Helm 3 完整教程(六):在模板中使用 Helm 函数
  10. Maven跳过antrun打包