矩阵乘
来源:互联网 发布:什么叫大数据云计算 编辑:程序博客网 时间:2024/04/25 19:00
一年前这个时候学的矩阵乘法, 但是当时好像就没怎么懂, 前天碰到了这种题果然还是不会做, ,,多做几道练习吧。
求K位的相邻两位之差不大于2的题。
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>#define mod 1000000007using namespace std;long long k;inline void cheng(int a[11][11], int b[11][11]){ int c[11][11] = {0}; for(int i = 0; i < 10; i ++) for(int j = 0; j < 10; j ++) for(int k = 0; k < 10; k ++) c[i][j] = ((long long)a[i][k] * b[k][j] + c[i][j]) % mod; for(int i = 0; i < 10; i ++) for(int j = 0; j < 10; j ++) a[i][j] = c[i][j]; }int a[11][11], b[11][11], ans;int main(){ freopen("sam.in", "r", stdin); freopen("sam.out", "w", stdout); scanf("%I64d", &k); long long n = k; if(n == 1){puts("10"); return 0;} for(int i = 0; i < 10; i ++)a[i][i] = 1; for(int i = 0; i < 10; i ++){ for(int j = 0; j < 10; j ++) if(abs(j - i) <= 2) b[i][j] = 1; } n--; while(n){ if(n & 1)cheng(a, b); n = n >> 1; cheng(b, b); } for(int j = 1; j < 10; j ++) for(int k = 0; k < 10; k ++) ans= (ans + a[k][j]) % mod; cout<<ans<<endl; // system("pause"); return 0;}然后做了noi2012随机数生成器
这个只是一个简单的两位的矩阵但是两个longlong乘起来会爆, 所以还需要用快速乘, 以前没写过快速乘, 不过还是很好写的, 就是和快速幂一样的思想, 从乘2到乘4再到乘8这样注意地把一个乘数分解就好了。但是我做这道题的时候还是不能自己构建出矩阵。。
0 0
- 矩阵乘
- 矩阵乘
- cache block 矩阵矩阵乘
- 矩阵连乘
- Strassen矩阵连乘
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘
- 矩阵连乘
- 矩阵连乘
- 矩阵连乘
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- 矩阵连乘问题
- DP---矩阵连乘
- 矩阵连乘 模版
- 高耐磨、微变形冷作模具用钢及高韧性冷作模具用钢
- 1005. Spell It Right (20)——PAT (Advanced Level) Practise
- git和svn比较
- NotificationManager和Notification的使用总结
- Oracle --- 事务隔离级别(简介概述)
- 矩阵乘
- Reskit 获取的response 解析完为nil
- Android Studio构建工具Gradle构建原理
- PowerDesigner使用教程
- Android Camera CameraHal.cpp 分析
- Android开发系列(十三):Intent实现Activity之间的转换以及startActivityForResult传递参数
- JavaScript面向对象编程
- hibernate _hbm2dllauto 配置说明
- android 在待机休眠状态 解除屏幕锁定 并点亮屏幕