hdu1757(矩阵加速)
来源:互联网 发布:linux samba进程 编辑:程序博客网 时间:2024/05/16 19:46
数据量为10^9,直接矩阵加速搞起
#include <cstring>#include <cstdio>const int N = 10;int MOD;int n;struct mat{ int a[N + 10][N + 10];};mat mul(mat x, mat y){ mat t; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { t.a[i][j] = 0; for(int k = 0; k < N; k++) { t.a[i][j] += (x.a[i][k] * y.a[k][j]) % MOD; } t.a[i][j] %= MOD; } } return t;}mat pow(mat x, int b){ mat e; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { e.a[i][j] = 0; } } for(int i = 0; i < N; i++) { e.a[i][i] = 1; } while(b) { if(b & 1) { e = mul(e, x); } x = mul(x, x); b >>= 1; } return e;}int main(int argc, char const *argv[]){ mat x; while(~scanf("%d%d", &n, &MOD)) { memset(x.a, 0, sizeof(x.a)); for(int i = 0; i < N; i++) { scanf("%d", &x.a[0][i]); } if(n < 10) { printf("%d", n % MOD); continue; } for(int i = 1; i < N; i++) { x.a[i][i - 1] = 1; } x = pow(x, n - 9); int ans = 0; for(int i = 0; i < N; i++) { ans += ((9 - i) * x.a[0][i]) % MOD; } printf("%d\n", ans % MOD); } return 0;}
0 0
- hdu1757(矩阵加速)
- Hdu1757(矩阵快速幂)
- HDU1757-矩阵相乘
- HDU1757 矩阵快速幂
- HDU1757(矩阵快速幂)
- hdu1757 矩阵快速幂--
- 快速矩阵幂 HDU1757
- 矩阵快速幂 HDU1757
- -----hdu1757 矩阵连乘
- 矩阵快速幂 hdu1757
- hdu1757-- A Simple Math Problem(矩阵快速幂优化)
- hdu1757 A Simple Math Problem (矩阵快速幂)
- hdu1757 A Simple Math Problem(矩阵快速幂)
- [HDU1757]A Simple Math Problem(矩阵快速幂)
- HDU1757矩阵的简单运用
- hdu1005(矩阵加速)
- hdu1757
- hdu1757
- 因式分解
- JavaScript基础----11Javascript函数-了解函数的用途
- 点的变换(矩阵转化)
- 最大二分匹配
- JavaScript基础----12Javascript函数-定义函数
- hdu1757(矩阵加速)
- 网络爬虫URL消重
- POJ 1804 Brainman
- 创新工场老板李开复讲创业中需要用到的冥定律!
- HDU OJ Max sum 题目1003
- JavaScript基础----13Javascript函数-调用函数
- C#通过PHP向MySQL插入数据的编码问题
- 八月六日 Linux操作系统学习笔记
- JavaScript基础----14Javascript函数-带参数的函数