Recursive sequence(矩阵快速幂)
这就是矩阵的魅力吗,爱了爱了
题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<math.h>
#include<set>
#define N 100
#define LL long long
using namespace std;
const LL mod = 2147493647;
struct Mat
{LL m[10][10];
};
Mat a, e;
Mat Mul(Mat x, Mat y)
{Mat c;for (int i = 1; i <= 7; i++) {for (int j = 1; j <= 7; j++) {c.m[i][j] = 0;}}for (int i = 1; i <= 7; i++) {for (int j = 1; j <= 7; j++) {for (int k = 1; k <= 7; k++) {c.m[i][j] = c.m[i][j] % mod + x.m[i][k] * y.m[k][j] % mod;}}}return c;
}
Mat pow(Mat x, LL y)
{Mat ans;for (int i = 1; i <= 7; i++){for (int j = 1; j <= 7; j++){if (i == j)ans.m[i][i] = 1;else ans.m[i][j] = 0;}}while (y) {if (y & 1) ans = Mul(ans, x);x = Mul(x, x);y >>= 1;}return ans;
}
int main()
{int t;scanf("%d", &t);LL n, f1, f2;Mat f;for (int i = 1; i <= 7; i++){for (int j = 1; j <= 7; j++)f.m[i][j] = 0;}f.m[1][1] = 1, f.m[1][2] = 1;f.m[2][1] = 2;f.m[3][1] = 1, f.m[3][3] = 1;f.m[4][3] = 4, f.m[4][4] = 1;f.m[5][3] = 6, f.m[5][4] = 3, f.m[5][5] = 1;f.m[6][3] = 4, f.m[6][4] = 3, f.m[6][5] = 2, f.m[6][6] = 1;f.m[7][3] = 1, f.m[7][4] = 1, f.m[7][5] = 1, f.m[7][6] = 1, f.m[7][7] = 1;while (t--){scanf("%lld%lld%lld", &n, &f1, &f2);e.m[1][1] = f2, e.m[1][2] = f1, e.m[1][3] = 81, e.m[1][4] = 27, e.m[1][5] = 9, e.m[1][6] = 3, e.m[1][7] = 1;Mat ans = pow(f, n - 2);LL sum = 0;for (int i = 1; i <= 7; i++){sum += e.m[1][i] * ans.m[i][1] % mod;sum %= mod;}printf("%lld\n", sum);} return 0;
}
Recursive sequence(矩阵快速幂)相关推荐
- Codeforces 1106F Lunar New Year and a Recursive Sequence 矩阵快速幂,原根转化模意义下对数,BSGS
文章目录 题意 题解 对数法转指数线性递推 原根与模意义下求对数 拔山盖世! 最终步骤 Problem Origin 狠搞了一个多星期,做出来之后仍然一知半解,写个博客重理思路. 题意 定义序列fff ...
- HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)
题目链接:点击查看 题目大意:给出函数f(x): 现给出n,a,b,c,mod,求f(n)对mod取模后的结果 题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对 ...
- HDU6395 Sequence(矩阵快速幂+数论分块)
题意: F(1)=A,F(2)=B,F(n)=C*F(n-2)+D*F(n-1)+P/n 给定ABCDPn,求F(n) mod 1e9+7 思路: P/n在一段n里是不变的,可以数论分块,再在每一段里 ...
- CodeForces 392C Yet Another Number Sequence 矩阵快速幂
题意: \(F_n\)为斐波那契数列,\(F_1=1,F_2=2\). 给定一个\(k\),定义数列\(A_i=F_i \cdot i^k\). 求\(A_1+A_2+ \cdots + A_n\). ...
- HDU 5950 Recursive sequence(矩阵快速幂)
题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...
- Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...
- poj2778DNA Sequence (AC自动机+矩阵快速幂)
转载请注明出处: http://www.cnblogs.com/fraud/ --by fraud DNA Sequence Time Limit: 1000MS Memory ...
- UVA10689 Yet another Number Sequence【数列+矩阵快速幂】
Let's define another number sequence, given by the following function: f(0) = a f(1) = b f(n) = f(n ...
- POJ 2778 DNA Sequence [AC自动机 + 矩阵快速幂]
http://poj.org/problem?id=2778 题意:给一些只由ACGT组成的模式串,问有多少种长度为n且不含有给出的模式串的DNA序列. 自动机的状态转换可以看成一个有向图(有重边的) ...
最新文章
- AI一分钟 | Google预借京东卖音箱;AI Dota击败人类玩家;思必驰5亿融资搞芯片
- 浏览器的headers
- [转载]全面解读软件版本的标志
- CSS padding margin border属性讲解
- 【jzoj】2018.2.7NOIP普及组——某【BC】组模拟赛
- Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物
- java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?
- 分析及解决SQLServer死锁问题
- kotlin xml布局_Android工具栏教程– XML布局和Kotlin
- Linux电脑弹出网络认证,linux局域网Dr.COM宽带认证客户端上网指南
- 八大排序算法(原理+代码详解)Python版
- st7789 旋转_有没有人调过 ST7789V驱动的显示屏啊
- 75.【JavaWeb-03】
- 6岁女孩出口之乎者也 用《论语》典故批评妈妈
- GreatSQL vs MySQL性能测试来了,速围观~
- 微型计算机基础知识答案,第1章 微型计算机基础知识 题库和答案.doc
- 一期Go群问答-并发控制-数据竞争-错误与异常
- C++课本的练习题及答案(第五章)
- 什么软件可以修改PDF内容,PDF如何添加文本
- 数据透视表中巧用平均值计算及时妥投率