tjut 5950
来源:互联网 发布:数据资产管理 编辑:程序博客网 时间:2024/05/20 04:28
#include<cstdio>using namespace std;typedef long long ll;const ll mod = 2147493647;ll n,a,b;struct Matrix{ ll m[7][7]; void init1() { m[0][0] = b,m[0][1] = 0,m[0][2] = 0,m[0][3] = 0,m[0][4] = 0,m[0][5] = 0,m[0][6] = 0; m[1][0] = a,m[1][1] = 0,m[1][2] = 0,m[1][3] = 0,m[1][4] = 0,m[1][5] = 0,m[1][6] = 0; m[2][0] = 16,m[2][1] = 0,m[2][2] = 0,m[2][3] = 0,m[2][4] = 0,m[2][5] = 0,m[2][6] = 0; m[3][0] = 8,m[3][1] = 0,m[3][2] = 0,m[3][3] = 0,m[3][4] = 0,m[3][5] = 0,m[3][6] = 0; m[4][0] = 4,m[4][1] = 0,m[4][2] = 0,m[4][3] = 0,m[4][4] = 0,m[4][5] = 0,m[4][6] = 0; m[5][0] = 2,m[5][1] = 0,m[5][2] = 0,m[5][3] = 0,m[5][4] = 0,m[5][5] = 0,m[5][6] = 0; m[6][0] = 1,m[6][1] = 0,m[6][2] = 0,m[6][3] = 0,m[6][4] = 0,m[6][5] = 0,m[6][6] = 0; } void init2() { m[0][0] = 1,m[0][1] = 2,m[0][2] = 1,m[0][3] = 4,m[0][4] = 6,m[0][5] = 4,m[0][6] = 1; m[1][0] = 1,m[1][1] = 0,m[1][2] = 0,m[1][3] = 0,m[1][4] = 0,m[1][5] = 0,m[1][6] = 0; m[2][0] = 0,m[2][1] = 0,m[2][2] = 1,m[2][3] = 4,m[2][4] = 6,m[2][5] = 4,m[2][6] = 1; m[3][0] = 0,m[3][1] = 0,m[3][2] = 0,m[3][3] = 1,m[3][4] = 3,m[3][5] = 3,m[3][6] = 1; m[4][0] = 0,m[4][1] = 0,m[4][2] = 0,m[4][3] = 0,m[4][4] = 1,m[4][5] = 2,m[4][6] = 1; m[5][0] = 0,m[5][1] = 0,m[5][2] = 0,m[5][3] = 0,m[5][4] = 0,m[5][5] = 1,m[5][6] = 1; m[6][0] = 0,m[6][1] = 0,m[6][2] = 0,m[6][3] = 0,m[6][4] = 0,m[6][5] = 0,m[6][6] = 1; } Matrix operator * (Matrix t) { Matrix res; for (int i = 0; i < 7; i++) { for (int j = 0; j < 7; j++) { res.m[i][j] = 0; for (int k = 0;k < 7; k++) res.m[i][j] = (res.m[i][j] + (m[i][k] % mod) * (t.m[k][j] % mod) % mod) % mod; } } return res; } Matrix operator ^ (int k) { Matrix res,s; res.init2(); s.init2(); while(k) { if(k & 1) res = res * s; k >>= 1; s = s * s; } return res; }};int main(){ int T; scanf("%d",&T); while(T--) { scanf("%lld %lld %lld",&n,&a,&b); if(n == 1) { printf("%lld\n",a % mod); continue; } if(n == 2) { printf("%lld\n",b % mod); continue; } Matrix ans,t; ans.init1(); t.init2(); ans = (t^(n-3)) * ans; printf("%lld\n",ans.m[0][0]); } return 0;}
0 0
- tjut 5950
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- 数据库数据去重方法
- 第十周—回文数1
- c语言基础知识:局部变量与全局变量
- [LeetCode]--47. Permutations II
- Tomcat中如何配置使用APR
- tjut 5950
- 第十周 回文数(一)
- 文件管理 特殊权限
- 萤石云视频Android SDK接口使用说明
- Redis之Sorted-sets 有序集合类型
- codevs 1060 搞笑世界杯
- 第二讲 数据类型
- 乘法口诀打印
- 11.2队内胡策