链接:https://www.nowcoder.com/acm/contest/105/G
来源:牛客网

题目描述

这是一个加强版的斐波那契数列。

给定递推式
求F(n)的值,由于这个值可能太大,请对109+7取模。

输入描述:

第一行是一个整数T(1 ≤ T ≤ 1000),表示样例的个数。以后每个样例一行,是一个整数n(1 ≤ n ≤ 10

18

)。

输出描述:

每个样例输出一行,一个整数,表示F(n) mod 1000000007。
示例1

输入

4
1
2
3
100

输出

1
16
57
558616258

这题是一题矩阵快速幂的模板题,表示第一次碰到矩阵快速幂然后就顺便学一下,其实和快速幂差不多。矩阵快速幂的难点一般是构造矩阵,但是这题递推公式给了我们还是非常容易构造出矩阵的。难题一般都是让我们自己去推公式,然后再通过公式写出所需要的矩阵。

递推公式给了我们,就是要找到一个矩阵A 【f(i),f(i-1),(i+1)^3,(i+1)^2,(i+1),1】 * A =【f(i-1),f(i-2),i^3,i^2,i,1】;如果学过线代,这个是非常容易推出来的。然后就通过矩阵的性质,   F【n】=A^(n-1)*F【1】;知道这些,就会发现这不就是一个SB题吗
 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <vector>
 4 #include <queue>
 5 #include <cstring>
 6 #include <string>
 7 using namespace std;
 8 const int maxn = 1e2 + 10;
 9 const int mod = 1e9 + 7;
10 typedef long long LL ;
11 struct mat
12 {
13     LL m[maxn][maxn];
14     mat() {
15        memset(m,0,sizeof(m));
16     }
17     mat operator * (mat &a ) {
18        mat ans;
19        for (int i=0 ;i<6 ;i++  ){
20           for (int j=0 ;j<6 ;j++) {
21               for (int k=0 ;k<6 ;k++) {
22                  ans.m[i][j]=(ans.m[i][j]+m[i][k]*a.m[k][j])%mod;
23               }
24           }
25        }
26        return ans;
27     }
28 };
29 mat modexp(mat a,LL b)
30 {
31     mat ans;
32     for (int i=0 ;i<6 ;i++ ) ans.m[i][i]=1;
33     while(b) {
34         if (b&1) ans=ans*a;
35         b=b>>1;
36         a=a*a;
37     }
38     return ans;
39 }
40 int main() {
41     long long  mm[6][6] = {
42         {1, 1, 1, 1, 1, 1},
43         {1, 0, 0, 0, 0, 0},
44         {0, 0, 1, 3, 3, 1},
45         {0, 0, 0, 1, 2, 1},
46         {0, 0, 0, 0, 1, 1},
47         {0, 0, 0, 0, 0, 1}
48     };
49     int t;
50     scanf("%d", &t);
51     while(t--) {
52         LL  n;
53         mat ans;
54         for (int i = 0 ; i < 6 ; i++) {
55             for (int j = 0 ; j < 6 ; j++) {
56                 ans.m[i][j] = mm[i][j];
57             }
58         }
59         scanf("%lld", &n);
60         ans = modexp(ans, n - 1);
61         printf("%lld\n", (ans.m[0][0] + ans.m[0][2] * 8 + ans.m[0][3] * 4 + ans.m[0][4] * 2 + ans.m[0][5]) % mod);
62     }
63     return 0;
64 }

转载于:https://www.cnblogs.com/qldabiaoge/p/8971714.html

又见斐波那契~矩阵快速幂入门题相关推荐

  1. 「GXOI / GZOI2019」逼死强迫症——斐波那契+矩阵快速幂

    题目 [题目描述] ITX351 要铺一条 $2 \times N$ 的路,为此他购买了 $N$ 块 $2 \times 1$ 的方砖.可是其中一块砖在运送的过程中从中间裂开了,变成了两块 $1 \t ...

  2. 牛客15666 又见斐波那契(矩阵快速幂)

    链接:https://ac.nowcoder.com/acm/problem/15666 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  3. 又见斐波那契数列(矩阵构造+矩阵快速幂)

    //补题~~~ 链接:https://ac.nowcoder.com/acm/problem/15666 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...

  4. 2018年湘潭大学程序设计竞赛 G又见斐波那契

    题目描述 这是一个加强版的斐波那契数列. 给定递推式 求F(n)的值,由于这个值可能太大,请对109+7取模. 输入描述: 第一行是一个整数T(1 ≤ T ≤ 1000),表示样例的个数.以后每个样例 ...

  5. 2018年湘潭大学程序设计竞赛G又见斐波那契

    链接:https://www.nowcoder.com/acm/contest/105/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  6. 烧脑:求解 类似 斐波那契数列 的 奥数题

    1.斐波那契数列 Fibonacci sequence 1)数列 1.1.2.3.5.8.13.21.34.... 2)递归公式 f(1) = 1 f(2) = 1 f(n) = f(n-1) + f ...

  7. POJ3070矩阵快速幂简单题

    题意:       求斐波那契后四位,n <= 1,000,000,000. 思路:        简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...

  8. POJ 3070 Fibonacci(矩阵快速幂入门、模板)

    ? 题目链接:http://poj.org/problem?id=3070 ?   这题就是让求斐波那契数列的第n项,但是题目中n很大,所以打表和直接求都会TLE,对于这个题我们可以用矩阵快速幂,下面 ...

  9. 51nod 1113 矩阵快速幂 模板题

    1113 矩阵快速幂 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 给出一个N * N的矩阵,其中的元素均为正整数.求这个矩阵的M次方.由于M次方的计 ...

最新文章

  1. 阿里AI摘图像识别竞赛WebVision桂冠,万物识别准确率创世界纪录
  2. RocketMQ源码 — 十一、 RocketMQ事务消息
  3. android DataBind LiveData ViewModel 使用详解
  4. 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
  5. 为何jsp 在resin下乱码,但在tomcat下却工作良好的问题
  6. wxWidgets:wxWeakRef< T >类模板的用法
  7. 如何去掉 从网页上copy到word文档中之后 的背景颜色 (备忘)
  8. win7系统丢失文件的处理方法
  9. python-对向-查看全部属性-查看全部方法
  10. tuning-primer.sh 性能调试工具的使用
  11. ZF环境要求及如何配置
  12. 由spin_lock_bh想到的一些事
  13. L298N 驱动模块的应用
  14. cv :: cvtColor
  15. 世界第八大奇迹:复利
  16. 淘宝天猫返利,是怎么一种运作模式?
  17. APP性能测试——内存测试
  18. flvplayer.swf flv视频播放器使用方法 (转载)
  19. 58同城复试面试复盘
  20. SEER数据库中肿瘤发病率计算并绘制发病率趋势图

热门文章

  1. 推出了底层代码chatbot开发工具,Rulai获650万美元融资
  2. 《数据中心虚拟化技术权威指南》一2.2 数据中心网络拓扑
  3. POJ 3723 Conscription 最小生成树
  4. 如何发送Head请求
  5. openssl 证书生成手册
  6. 三百元月薪的小资生活
  7. 字节对齐和C/C++函数调用方式学习总结(多篇节选)
  8. research paper for management science
  9. 微信公众平台:反正公众号的一切操作都从这里入手!
  10. HU 3496 Watch The Movie---二维费用