[hdu 5950 Recursive sequence] 矩阵快速幂
来源:互联网 发布:淘宝刷评价兼职 编辑:程序博客网 时间:2024/05/29 13:23
[hdu 5950 Recursive sequence] 矩阵快速幂
题目链接:[hdu 5950 Recursive sequence]
题意描述:已知通项公式
解题思路:
显然的矩阵快速幂。
需要维护的值有
然后构造矩阵就可以了。
#include <bits/stdc++.h>using namespace std;typedef __int64 LL;const LL MOD = 2147493647;LL T, N, A, B;struct Mat { static const int MSZ = 7; LL m[MSZ][MSZ]; void O() { memset(m, 0, sizeof(m)); } void E() { O(); for(int i = 0; i < MSZ; i++) m[i][i] = 1; } void assign(LL ar[MSZ][MSZ]) { for(int i = 0; i < MSZ; i++) { for(int j = 0; j < MSZ; j++) { m[i][j] = ar[i][j]; } } } Mat operator * (const Mat& e) const { Mat ret; ret.O(); for(int k = 0; k < MSZ; k++) { for(int i = 0; i < MSZ; i++) { if(m[i][k] == 0) continue; for(int j = 0; j < MSZ; j++) { ret.m[i][j] += m[i][k] * e.m[k][j] % MOD; ret.m[i][j] %= MOD; } } } return ret; } Mat operator ^ (LL b) const { Mat ret, a(*this); ret.E(); while(b > 0) { if(b & 1) ret = ret * a; a = a * a; b >>= 1; } return ret; }} tras, init, res;int main() {// freopen("input.txt", "r", stdin); // 变换矩阵 LL x[][Mat::MSZ] = { {1, 2, 1, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 4, 6, 4, 1}, {0, 0, 0, 1, 3, 3, 1}, {0, 0, 0, 0, 1, 2, 1}, {0, 0, 0, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 1} }; tras.assign(x); cin >> T; while(T --) { cin >> N >> A >> B; if(N == 1) { cout << A % MOD << "\n"; continue; } if(N == 2) { cout << B % MOD << "\n"; continue; } // 初始矩阵 LL y[][Mat::MSZ] = { {B, 0, 0, 0, 0, 0, 0}, {A, 0, 0, 0, 0, 0, 0}, {81, 0, 0, 0, 0, 0, 0}, {27, 0, 0, 0, 0, 0, 0}, {9, 0, 0, 0, 0, 0, 0}, {3, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 0} }; init.assign(y); res = tras ^ (N - 2); res = res * init; cout << res.m[0][0] << endl; } return 0;}
1 0
- [hdu 5950 Recursive sequence] 矩阵快速幂
- HDU-5950-Recursive sequence-矩阵快速幂
- HDU 5950 Recursive sequence 矩阵快速幂
- [矩阵快速幂]HDU 5950 Recursive sequence
- HDU 5950 Recursive sequence(矩阵构造+矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence(矩阵快速幂,构造)
- HDU 5950 Recursive sequence(矩阵快速幂)
- Recursive sequence HDU --- 5950 【公式矩阵快速幂】
- HDU 5950 Recursive sequence(矩阵快速幂)
- HDU 5950 Recursive sequence(矩阵快速幂)
- hdu 5950 Recursive sequence (矩阵快速幂)
- hdu 5950 Recursive sequence(递推 快速幂矩阵)
- hdu 5950 Recursive sequence(矩阵快速幂,经典矩阵构造方法)
- hdu 1590(Recursive sequence)矩阵快速幂
- 2016 沈阳 1003 Recursive sequence(hdu 5950)矩阵快速幂
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
- ICPC 沈阳站C题 HDU 5950 Recursive sequence 矩阵快速幂 线性递推
- 使用FFMPEG发布RTSP流
- Lucene查询索引
- Lucene 查询(Query)子类
- TCP、UDP、RTP(RTCP)异同与区别
- splash页面定时跳转,引导页倒计时功能开发
- [hdu 5950 Recursive sequence] 矩阵快速幂
- Lucene查询结果高亮
- live555源代码分析
- LeetCode 404. Sum of Left Leaves
- UVa12412
- 136. PHP 编程
- Android蓝牙播放如何显示歌曲信息?
- 旅行
- 美国人听说“菲渔民能返黄岩岛”,竟误以为南海仲裁生效了