题目描述

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

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

输入描述:

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

输出描述:

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

输入

4
1
2
3
100

输出

1
16
57
558616258

一开始不了解矩阵快速幂,不知道怎么做,刷了一波矩阵快速幂再做这个就发现很简单了。

很明显就是6*6矩阵,构建好矩阵就行了。构建矩阵如下:

  fi        1    1    1    1    1    1    fi-1

 fi-1     1      0     0    0    0   0    fi-2

(i+1)3     0      0      1    3    3    1    i3

(i+1)2 =   0      0      0    1    2    1  *  i2

(i+1)      0      0      0    0    1    1    i

  1        0      0      0    0    0    1    1

 1 #include <bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 const int mod = 1000000007;
 5 struct mat {
 6     ll m[6][6];
 7     mat() {
 8         memset(m, 0, sizeof(m));
 9     }
10 };
11
12 mat mul(mat &A, mat &B) {
13     mat C;
14     for(int i = 0; i < 6; i ++) {
15         for(int j = 0; j < 6; j ++) {
16             for(int k = 0; k < 6; k ++) {
17                 C.m[i][j] = (C.m[i][j] + A.m[i][k]*B.m[k][j]) %mod;
18             }
19         }
20     }
21     return C;
22 }
23
24
25 mat pow(mat A, ll n) {
26     mat B;
27     for(int i = 0; i < 6; i ++) B.m[i][i] = 1;
28     while(n) {
29         if(n&1LL) B = mul(B, A);
30         A = mul(A, A);
31         n >>= 1;
32     }
33     return B;
34 }
35 int main() {
36     int t;
37     cin >> t;
38     mat A;
39     for(int i = 0; i < 6; i ++) A.m[0][i] = 1;
40     A.m[1][0] = A.m[2][2] = A.m[2][5] = 1;
41     A.m[3][3] = A.m[3][5] = A.m[4][4] = 1;
42     A.m[4][5] = A.m[5][5] = 1;
43     A.m[2][3] = A.m[2][4] = 3;
44     A.m[3][4] = 2;
45     while(t--) {
46         ll n;
47         cin >> n;
48         mat B =pow(A, n-1);
49         ll ans = B.m[0][0]+B.m[0][2]*8+B.m[0][3]*4+B.m[0][4]*2+B.m[0][5];
50         cout << ans%mod << endl;
51     }
52     return 0;
53 }

转载于:https://www.cnblogs.com/xingkongyihao/p/9017138.html

2018年湘潭大学程序设计竞赛 G又见斐波那契相关推荐

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

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

  2. 又见斐波那契~矩阵快速幂入门题

    链接:https://www.nowcoder.com/acm/contest/105/G 来源:牛客网 题目描述 这是一个加强版的斐波那契数列. 给定递推式 求F(n)的值,由于这个值可能太大,请对 ...

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

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

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

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

  5. 字节跳动杯2018中国大学生程序设计竞赛-女生专场题解

    以下所有AC题解程序来自"仙客传奇"团队. A. 口算训练 题解链接: ABDFHK "字节跳动杯"2018中国大学生程序设计竞赛-女生专场 B. 缺失的数据范 ...

  6. 2018中国大学生程序设计竞赛-网络选拔赛题解

    以下所有AC题解程序来自"仙客传奇"团队. A. Buy and Resell AC的C++语言程序: #include<iostream> #include<c ...

  7. c语言oj竞选投票,Just oj 2018 C语言程序设计竞赛(高级组)H: CBT?

    H: CBT? 时间限制: 1 s      内存限制: 128 MB      提交 我的状态 题目描述 对于二叉树,如果这棵树的节点排布是按行从上到下,每行从左到右挨个放置,中间不会有空闲的节点. ...

  8. 2019年湘潭大学程序设计竞赛

    Problem A Who's better? https://ac.nowcoder.com/acm/contest/893/A 题意:模拟ACM比赛计分规则 题解:模拟 C++版本一 /* *@A ...

  9. 江西财经大学第一届程序设计竞赛 G题小Q的口袋校园

    题目链接:https://www.nowcoder.com/acm/contest/115/G 解题思路:题解就一份代码,贪心的思想.先按开始时间进行排序. 然后不断贪心获得happy[ j ]的最大 ...

最新文章

  1. koa+mongoose基础入门
  2. html文件执行顺序,网页的加载和执行顺序?
  3. mysql存储过程执行update_MySQL存储过程实现动态执行SQL
  4. 构建服务器_如何使用无服务器构建完整的后端系统
  5. tensorflow-reverse(反向传播)
  6. 《OD学spark》20161022
  7. 卖家如何利用关键词进行SEO优化以提高排名?
  8. python调用excel的宏_配置Office Excel运行Python宏脚本
  9. 设计师提高效率必备的10大在线工具
  10. python儿童编程-一款儿童编程入门的理想工具——PythonTurtle
  11. 苹果恢复出厂设置系统也会还原吗_手机经常恢复出厂设置会怎么样?对手机有害处吗?这下终于清楚了...
  12. C#服务端的微信小游戏——多人在线角色扮演(十五)
  13. 华为、微软、戴尔等企业将参加“多哈智慧城市博览会”
  14. PaddleX 在windows10使用paddle_inference部署C#打包dll全教程
  15. 微信小程序系列一:获取头像昵称
  16. Power BI(十三)Power pivot之工作日计算
  17. [问题已处理]-k8s出现Evicted状态
  18. 从大脑结构到人工神经网络
  19. 怎么样才能学好java_论新手该如何学习java?
  20. A-level Computer Science 计算机科学学习笔记/经验分享/教学 (1):考试流程和大纲

热门文章

  1. 在java中添加源_关于Java:如何在Android Studio中添加链接的源文件夹?
  2. GIT提交的时候出现 ! [rejected] master -> master (non-fast-forward)错误
  3. 如何查看电脑显卡配置_组装电脑:电脑配置显卡推荐
  4. 客户将数据库迁移上云的常用办法
  5. 不同操作系统打开文件浏览器(资源管理器)的方式
  6. C#前后端操作json数据
  7. error 1307 (HY000):Failed to create procedure
  8. 棋盘切割 DP POJ 1191
  9. javax.script.ScriptException: ReferenceError: xxx is not defined in eval
  10. docker安装postgres