纪念SlingShot

Description

已知 F(n)=3 * F(n-1)+2 * F(n-2)+7 * F(n-3),n>=3,其中F(0)=1,F(1)=3,F(2)=5,对于给定的每个n,输出F(0)+ F(1)+ …… + F(n) mod 2009。

Input

第一行是一整数m,代表总共有m个cases。

Output

对于每个case,输出一行。格式见样例,冒号后有一个空格。

Sample Input

2
3
6

Sample Output

Case 1: 37
Case 2: 313

思路:很简单的矩阵推理。。 告诉了 fn-1,fn-2,fn-3所以因子里面肯定有这三个,同时他是求和,所以因子里面肯定有个sn,直接列上就出答案了。。。

S(n)=S(n-1)+F(n)=S(n-1)+3F(n-1)+2F(n-2)+7F(n-3),因此构造矩
阵:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MOD = 2009;
int n;
struct node
{int matrix[4][4];
};
node mul(node a, node b)
{node t;memset(t.matrix, 0, sizeof(t.matrix));for(int i = 0; i < 4; i++)for(int j = 0; j < 4; j++)for(int k = 0; k < 4; k++)t.matrix[i][j] = (t.matrix[i][j] + a.matrix[i][k] * b.matrix[k][j]) % MOD;return t;
}
node quick_matrix(node p, int k)
{node q;memset(q.matrix, 0, sizeof(q.matrix));for(int i = 0; i < 4; i++)q.matrix[i][i] = 1;while(k){if(k & 1) q = mul(p, q);p = mul(p, p);k >>= 1;}return q;
}
int main()
{int t, l = 0;scanf("%d", &t);while(t--){scanf("%d", &n);node r;r.matrix[0][0] = 1; r.matrix[0][1] = 3; r.matrix[0][2] = 2; r.matrix[0][3] = 7;r.matrix[1][0] = 0; r.matrix[1][1] = 3; r.matrix[1][2] = 2; r.matrix[1][3] = 7;r.matrix[2][0] = 0; r.matrix[2][1] = 1; r.matrix[2][2] = 0; r.matrix[2][3] = 0;r.matrix[3][0] = 0; r.matrix[3][1] = 0; r.matrix[3][2] = 1; r.matrix[3][3] = 0;if(n == 0)  {printf("Case %d: 1\n",++l); continue;}if(n == 1)  {printf("Case %d: 4\n",++l); continue;}r = quick_matrix(r, n-2);printf("Case %d: %d\n",++l, (r.matrix[0][0]*9 + r.matrix[0][1]* 5 + r.matrix[0][2] * 3 + r.matrix[0][3])% MOD);}return 0;
}

FZU 1683 纪念SlingShot (简单的矩阵快速幂)相关推荐

  1. fzu 1683 纪念SlingShot 矩阵

    题意: 对于给出的递推关系,求前n项和 思路: 数据大,有规律.矩阵快速幂吧.然而为啥这题long long 就TLE.智障题. 构造: Sn=Sn-1+F(n)= Sn-1 +3F(n-1)+2F( ...

  2. FZU 1683 纪念SlingShot

    Problem 1683 纪念SlingShot Accept: 682    Submit: 2368 Time Limit: 1000 mSec    Memory Limit : 32768 K ...

  3. FZU - 1683 纪念SlingShot

    Problem 1683 纪念SlingShot Accept: 719    Submit: 2492 Time Limit: 1000 mSec    Memory Limit : 32768 K ...

  4. 【FOJ】Problem 1683 纪念SlingShot

    Problem 1683 纪念SlingShot. 思路 构造矩阵T S(n) = Tn-2[0][0] × S(2) + Tn-2[0][1] × f(2) + Tn-2[0][2] × f(1) ...

  5. 【ZOJ 2974】Just Pour the Water(矩阵快速幂)

    传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2974 题意 给出n个杯子与初始水量同时进行操作 将其中的水同时平均 ...

  6. HDOJ 1757 A Simple Math Problem(矩阵快速幂)

    2018-5-24 简单的矩阵快速幂问题,重点是如何找到对应关系. f(10) a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 f(9) f(9) 1 0 0 0 0 0 0 0 0 0 ...

  7. HDU 2256(矩阵快速幂)

    传送门 题面: Problem of Precision Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  8. ACM数论之矩阵快速幂

    题目链接:杭电1005.一个简单的矩阵快速幂,一开始一直不理解,只是会单纯数字的快速幂,后来经人点拨,只是运算单位不同,一个是矩阵一个是数字.普通数字中的快速幂是用1来作为累乘量的,而矩阵中的单位矩阵 ...

  9. POJ3070矩阵快速幂简单题

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

最新文章

  1. PostgreSQL命令行方式登陆数据库
  2. maven错误The JAVA_HOME environment variable is not defined correctly
  3. P3389 【模板】高斯消元法
  4. 联轴器选型_联轴器| 软件工程
  5. 服务器 | 安装最新版R和Rstudio(3.5.3)
  6. asp网络编程:用ASP实现网页BBS
  7. 【回归预测】基于GPML工具箱的高斯过程回归附matlab代码
  8. 智慧体检中心管理系统方案/APP/小程序/公众号/网站
  9. python淘宝秒拍_(python)下载秒拍美拍视频
  10. mind map 思维导图
  11. Chrome 扩展开发教程
  12. luogu 2184 贪婪大陆
  13. OpenCV+Mediapipe人物动作捕捉与Unity引擎的结合
  14. 揪出毛孔粗大4个致命原因
  15. 2022年SCAU计算智能题库
  16. rails官方指南--建一个简易博客
  17. matlab fitctree 原理,电力窃漏电用户自动识别.PDF
  18. SQL Server 使用全文索引进行页面搜索
  19. 用户在Eightcap易汇平台可以交易哪些产品?投资选择多吗?
  20. 前端页面中iOS版微信长按识别二维码的bug

热门文章

  1. sql统计各科成绩大于平均分的人_求解: sql 数据库 检索各科成绩均大于等于该科平均成绩的学生的学号和姓名...
  2. input和textarea只读设置
  3. 机器学习-44-Transfer Learning(迁移学习)
  4. appium---操作手机按键(adb shell input keyevent )
  5. 修复org.apache.jasper.JasperException: 无法编译JSP
  6. 使用Python实现多项式系数卷积乘法
  7. prometheus使用 (二) 监控主机节点
  8. ijkplayer iOS11播放只有声音没有图像
  9. Houdini图文笔记:Your driver settings have been set to force 4x Antialiasing in OpenGL applications问题的解决
  10. 2022-07-08 clickhouse向量化column