HDU-2256(矩阵快速幂)
来源:互联网 发布:简单软件编程教程 编辑:程序博客网 时间:2024/05/22 11:53
3125
997841
/*题意:求{[sqrt(2)+sqrt(3)]^2n}%1024取整题解:见上图*/#include <stdio.h>#include <string.h>#include<iostream>#include <algorithm>using namespace std;#define LL __int64struct node{LL maxtri[6][6];};node res, roi;LL n, kk = 1024;node operator * (node &a, node &b){node ans;for (int i = 0; i < 2; i++){for (int j = 0; j < 2; j++){ans.maxtri[i][j] = 0;for (int k = 0; k < 2; k++){ans.maxtri[i][j] += a.maxtri[i][k] * (b.maxtri[k][j]%kk)%kk;ans.maxtri[i][j] %= kk;}}}return ans;}void quickmuti(LL nn){node temp;for (int i = 0; i < 2; i++){for (int j = 0; j < 2; j++){temp.maxtri[i][j] = (i == j);}}while (nn){if (nn & 1){temp = temp*roi;}nn >>= 1;roi = roi*roi;}res = temp;}void init(){memset(roi.maxtri, 0, sizeof(roi.maxtri));memset(res.maxtri, 0, sizeof(res.maxtri));roi.maxtri[0][0] = roi.maxtri[1][1] = 5;roi.maxtri[1][0] = 2;roi.maxtri[0][1] = 12;res.maxtri[0][0] = 5;res.maxtri[1][0] = 2;}int main(){int t;cin >> t;while (t--){scanf("%I64d", &n);int num[3] = { 1,1,2 };if (n == 1){cout << '9' << endl;continue;}init();quickmuti(n-1);LL ans = 0;ans = (LL)(res.maxtri[0][0]*5 + 2*res.maxtri[0][1])%kk;printf("%I64d\n", (2*ans-1)%kk);}return 0;}
阅读全文
0 0
- HDU 2256(矩阵快速幂)
- hdu 2256(矩阵快速幂)
- HDU-2256(矩阵快速幂)
- 快速矩阵幂HDU 2256
- hdu 2256(矩阵快速幂)
- hdu 2256(矩阵快速幂)
- HDU 2256 矩阵快速幂
- HDU 2256 & HDU 4565 (矩阵快速幂 + 公式推演)
- HDU 2256 Problem of Precision (矩阵快速幂)
- HDU 2256 Problem of Precision(矩阵快速幂)
- HDU 2256 Problem of Precision(矩阵快速幂 数论 )
- HDU 2256 Problem of Precision(矩阵快速幂)
- hdu 2256【矩阵快速幂 构造】
- hdu-2256(矩阵快速幂+推导)
- hdu 2256 4565 矩阵快速幂
- hdu 2254 奥运(矩阵快速幂)
- hdu 1575 (矩阵快速幂)
- HDU - 2604 Queuing (矩阵快速幂)
- HDU 6041(仙人掌图+tarjan)
- 博弈论(二):Sprague-Grundy函数
- 网页刷不开,那是你没改这个设置
- 敢动我电脑?小本本记下来
- 让windows10通知中心常驻
- HDU-2256(矩阵快速幂)
- Windows10开热点难?
- Mac中启动关闭Jenkins的方法
- 为什么SSD不能回复数据?
- 下软件,就靠这几个网站
- 鼠标的连键问题
- 命名规范,快捷键
- 上传开源项目到GitHub,原来这么简单啊
- 顺序表基本操作归纳整理