博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3734 Blocks
阅读量:4452 次
发布时间:2019-06-07

本文共 1378 字,大约阅读时间需要 4 分钟。

思路:

递推 + 快速幂优化。

实现:

1 #include 
2 #include
3 #include
4 using namespace std; 5 typedef vector
> matrix; 6 7 const int MOD = 10007; 8 9 matrix multiply(matrix & a, matrix & b)10 {11 matrix c(a.size(), vector
(b[0].size()));12 for (int i = 0; i < a.size(); i++)13 {14 for (int k = 0; k < a[0].size(); k++)15 {16 for (int j = 0; j < b[0].size(); j++)17 {18 c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % MOD;19 }20 }21 }22 return c;23 }24 25 matrix pow(matrix & a, long long n)26 {27 matrix res(a.size(), vector
(a[0].size()));28 for (int i = 0; i < a.size(); i++)29 {30 res[i][i] = 1;31 }32 while (n > 0)33 {34 if (n & 1)35 res = multiply(res, a);36 a = multiply(a, a);37 n >>= 1;38 }39 return res;40 }41 int main()42 {43 int t;44 long long n;45 cin >> t;46 while (t--)47 {48 scanf("%lld", &n);49 matrix a(3, vector
(3));50 a[0][0] = 2; a[0][1] = 1; 51 a[1][0] = 2; a[1][1] = 2; a[1][2] = 2;52 a[2][1] = 1; a[2][2] = 2;53 a = pow(a, n);54 matrix b(3, vector
(1));55 b[0][0] = 1;56 b[1][0] = 0;57 b[2][0] = 0;58 a = multiply(a, b);59 cout << a[0][0] << endl;60 }61 return 0; 62 }

 

转载于:https://www.cnblogs.com/wangyiming/p/9093514.html

你可能感兴趣的文章
[概念] js的函数节流和throttle和debounce详解
查看>>
普通的java Ftp客户端的文件上传
查看>>
视图系统
查看>>
Palindromes _easy version
查看>>
vue 小记
查看>>
CURRICULUM VITAE
查看>>
菱形缓冲器电路
查看>>
盲点流水账记录
查看>>
08多态
查看>>
Groovy 程序结构
查看>>
使用 WordPress 的导航菜单
查看>>
input只能输入数字和小数点,并且只能保留小数点后两位 - CSDN博客
查看>>
js 不固定传参
查看>>
远程调试UWP遇到新错误Could not generate the root folder for app package ......
查看>>
Knockout.js 数据验证之插件版和无插件版
查看>>
git--windwos下的安装与使用(一)
查看>>
[倍增][最短路-Floyd][dp]
查看>>
SpringAOP用到了什么代理,以及动态代理与静态代理的区别
查看>>
利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)
查看>>
【leetcode】Populating Next Right Pointers in Each Node
查看>>