这个题有循环节,可以不用这么做,这个可以当一个模板

  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. using namespace std;
  5. typedef long long ll;
  6. struct matrix{
  7. int r,c;ll m[5][5];
  8. };
  9. matrix A,B,C,D;
  10. int n;
  11. void init(){
  12. A.m[1][1]=3;A.m[1][2]=1;
  13. B.m[1][1]=1;B.m[1][2]=1;
  14. B.m[2][1]=-1;B.m[2][2]=0;
  15. A.r=1;A.c=2;
  16. B.r=2;B.c=2;
  17. }
  18. void multyply(matrix &A,matrix B){
  19. int i,j,k;
  20. if(A.c!=B.r) printf("err\n");
  21. for(i=1;i<=A.r;++i){
  22. for(j=1;j<=B.c;++j){
  23. C.m[i][j]=0;
  24. for(k=1;k<=A.c;++k){
  25. C.m[i][j]+=A.m[i][k]*B.m[k][j];
  26. }
  27. }
  28. }
  29. A.c=B.c;
  30. for(i=1;i<=A.r;++i){
  31. for(j=1;j<=B.c;++j){
  32. A.m[i][j]=C.m[i][j];
  33. }
  34. }
  35. }
  36. void fast_pow(ll b){
  37. if(b==0) return;
  38. D.m[1][1]=1;D.m[1][2]=0;
  39. D.m[2][1]=0;D.m[2][2]=1;
  40. D.r=2;D.c=2;
  41. while(b){
  42. if(b&1){
  43. multyply(D,B);
  44. }
  45. multyply(B,B);
  46. b>>=1;
  47. }
  48. multyply(A,D);
  49. }
  50. int main(){
  51. int T;scanf("%d",&T);
  52. while(T--){
  53. scanf("%d",&n);
  54. init();
  55. if(n==1){
  56. printf("%d\n",1);
  57. }
  58. else if(n==2){
  59. printf("%d\n",4);
  60. }
  61. else{
  62. if(n-1==2){
  63. printf("%d\n",6);
  64. }
  65. else{
  66. fast_pow(n-3);
  67. printf("%I64d\n",3+A.m[1][1]);
  68. }
  69. }
  70. }
  71. return 0;
  72. }

快速计算类似斐波那契数列数列的数列的第N项,矩阵快速幂的更多相关文章

  1. 第2章 数字之魅——斐波那契(Fibonacci)数列

    斐波那契(Fibonacci)数列 问题描述 递归算法: package chapter2shuzizhimei.fibonacci; /** * Fibonacci数列递归求解 * @author ...

  2. UVA12470—Tribonacci (类似斐波那契,简单题)

    题目链接:https://vjudge.net/problem/UVA-12470 题目意思:我们都知道斐波那契数列F[i]=F[i-1]+F[i-2],现在我们要算这样的一个式子T[i]=T[i-1 ...

  3. python - 斐波那契(Fibonacci)数列

    斐波那契数列即数列中每一项等于它前面两项的和,公式如下: f(n) = f(n-1) + f(n-2)    n>2        -----        递推公式 f(n) = 1     ...

  4. 打印斐波那契(Fibonacci)数列

    需求:打印 Fibonacci数列 思路: 当前项的值等于前两项数值的和 F=(F-1)+F(F-2) 样例: 输入:10 输出:1 1 2 3 5 8 13 21 34 55 辗转相加法实现 #in ...

  5. Java版经典兔子繁殖迭代问题——斐波那契(Fibonacci)数列

    /** * 题目: * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子. * 假如兔子都不死,问经过month个月后,兔子的总数为多少对? */ public ...

  6. HDU 2018母牛的故事(类似斐波那契,找规律)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2018 母牛的故事 Time Limit: 2000/1000 MS (Java/Others)     ...

  7. 使用并行的方法计算斐波那契数列 (Fibonacci)

    更新:我的同事Terry告诉我有一种矩阵运算的方式计算斐波那契数列,更适于并行.他还提供了利用TBB的parallel_reduce模板计算斐波那契数列的代码(在TBB示例代码的基础上修改得来,比原始 ...

  8. 以计算斐波那契数列为例说说动态规划算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)

    动态规划(Dynamic Programming)是求解决策过程(decision process)最优化的数学方法.它的名字和动态没有关系,是Richard Bellman为了唬人而取的. 动态规划 ...

  9. 用递归方法计算斐波那契数列(Recursion Fibonacci Sequence Python)

    先科普一下什么叫斐波那契数列,以下内容摘自百度百科: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因意大利数学家列昂纳多·斐波那契(Leonardoda Fibonacci ...

随机推荐

  1. Jmeter二次开发——自定义函数

    在之前的博文中,Jmeter二次开发--基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发.聊到Jmeter的函数,知道Jme ...

  2. QT串口助手(三):数据接收

    作者:zzssdd2 E-mail:zzssdd2@foxmail.com 一.前言 开发环境:Qt5.12.10 + MinGW 实现的功能 串口数据的接收 ascii字符形式显示与hex字符形式显 ...

  3. jQ实现图片无缝轮播

    在铺页面的过程中,总是会遇到轮播图需要处理,一般我是会用swiper来制作,但总会有哪个几个个例需要我自己来写功能,这里制作了一个jq用来实现图片无缝轮播的dome,分享给大家ヽ( ̄▽ ̄)ノ. dom ...

  4. CentOS7 通过snat进行上网

    需求: 有两台服务器,一台绑定了弹性公网IP,另外一台没有,需要内网服务器通过有弹性ip的机器代理进行上网. 环境: centos7 操作系统 服务器A: 192.168.0.18 (可以上网,有弹性 ...

  5. aio 系列函数是由 POSIX 定义的异步操作接口,可惜的是,Linux 下的 aio 操作,不是真正的操作系统级别支持的,它只是由 GNU libc 库函数在用户空间借由 pthread 方式实现的,而且仅仅针对磁盘类 I/O,套接字 I/O 不支持。

    30 | 真正的大杀器:异步I/O探索 https://time.geekbang.org/column/article/150780

  6. socket更多方法

    一.socket的更多方法介绍 ###socket更多方法服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客 ...

  7. vim 行号的显示与隐藏

    通常我们在使用vim编辑器的时候,需要显示和隐藏行号 隐藏行号: 1.首先我们vim   1.txt   (进入我们编辑的文档),如下,此时是显示行号的 2.按一下esc键,并输入:(冒号),完成效果 ...

  8. LOJ10013曲线

    题目描述 明明做作业的时候遇到了n  个二次函数s_i(x)=ax^2+bx+c ,他突发奇想设计了一个新的函数 f(x)=max{s_i(x)},i=1,2,...,n. 明明现在想求这个函数在 [ ...

  9. Spring整合SpringMVC + Mybatis基础框架的配置文件

    目录 前言 1. Mybatis层编写 2. Spring层编写 1. Spring整合Mybatis 2. Spring整合service 3. SpringMVC层编写 1. 编写web.xml ...

  10. SpringMVC听课笔记(四:映射请求参数 & 请求头)

    1.请求参数 @RequestParam  来映射请求参数  http://localhost:8080/springmvc-1/springmvc/testRequestParam?username ...