HDU1575 && HDU1757(矩阵入门)
2012-08-02 10:47
162 查看
HDU1575_矩阵的入门题目,比较基础。
View Code
/* *State: 1575 0MS 256K 1916 B C++ *题目大意: * A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和), * 现要求Tr(A^k)%9973。 *解题思路: * 普通矩阵计算即可。 *解题感想: * 注意该模板为ndim赋值很重要,这个为实际矩阵的大小。 */
View Code
#include <stdio.h> #include <iostream> #include <string.h> #define MAX_DIMENSION 11 using namespace std; typedef int MATRIX_TYPE; typedef unsigned __int64 MAX_INT_TYPE; //temporary var to avoid overflowing typedef MATRIX_TYPE Matrix[MAX_DIMENSION][MAX_DIMENSION]; int ndim = MAX_DIMENSION; int mod = 9973;//mod void m_zero(Matrix x) { memset(x, 0, sizeof(MATRIX_TYPE)*MAX_DIMENSION*MAX_DIMENSION); } void m_one(Matrix x) { int i; m_zero(x); for(i=0;i<ndim;++i)x[i][i]=1; } void m_copy(Matrix src,Matrix dest) { memcpy(dest,src, sizeof(MATRIX_TYPE)*MAX_DIMENSION*MAX_DIMENSION); } //c=a*b void m_multiple(Matrix a,Matrix b,Matrix c) { int i,j,k; MAX_INT_TYPE t; for(i=0;i<ndim;i++) for(j=0;j<ndim;j++) { t=0; if(mod<=1) for(k=0;k<ndim;k++) t+=a[i][k]*b[k][j];//module else for(k=0;k<ndim;k++){ t+=(a[i][k]*(MAX_INT_TYPE)b[k][j])%mod; t%=mod; }//module c[i][j]=t; } } void m_pow(Matrix x, unsigned int n, Matrix y) { Matrix temp,temp_x; m_one(y); m_copy(x,temp_x); for(;n;) { if ((n & 1) != 0) { m_multiple(temp_x,y,temp); m_copy(temp,y); } if ((n >>= 1)) { m_multiple(temp_x,temp_x,temp); m_copy(temp,temp_x); } } } void view_arr(Matrix a, int n) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) cout << a[i][j] << " "; cout << endl; } } int main(void) { #ifndef ONLINE_JUDGE //freopen("in.txt", "r", stdin); #endif int k, m; while(scanf("%d %d", &k, &m) == 2) { Matrix a, ans; m_zero(a); ndim = 10; mod = m; for(int i = 0; i < 10; i++) scanf("%d", &a[0][i]); for(int i = 1; i < 10; i++) a[i][i - 1] = 1; if(k < 10) { printf("%d\n", k % mod); continue; } //view_arr(a, 10); m_pow(a, k - 9, ans); //view_arr(ans, 10); int res = 0; for(int i = 0; i < 10; i++) res = (res + ans[0][i] * (9 - i)) % mod; printf("%d\n", res); } return 0; }
相关文章推荐
- HDU1575 矩阵快速幂入门
- 矩阵快速幂(入门) 学习笔记hdu1005, hdu1575, hdu1757
- 机器学习入门(8)--向量&矩阵
- hdu1575(矩阵快速幂入门题)
- hdu1575:Tr A_矩阵的幂&二分求幂
- hdu 1542 矩形面积并 &&hdu 1255 矩形面积交 && hdu 1828 矩阵周长并 线段树+扫描线入门
- HDU_Steps8.3 矩阵应用 HDU1575 HDU1757 HDU2294 HDU2254 HDU2276 HDU2855 HDU3519 HDU3509
- matlab入门教程七 ----- 矩阵运算&线性方程组&特征值
- javascript入门系列演示·流程控制之 判断、循环
- hdu 2276 矩阵快速幂&&循环矩阵优化
- Hdu1575 - Tr A - 矩阵快速幂
- Spring入门(IOC&AOP)
- t4 template & MSBuild 入门
- 编程艺术第二十三~四章&十一续:杨氏矩阵查找,倒排索引关键词Hash编码
- HTC one 数字雨矩阵 安卓开机动画
- RIA技术入门之Macromedia Flex & JSP(四)
- Linux入门:常用命令:gzip、tar、file、>、>>、<、2>、;、&&、||、``
- AD & ADSI入门
- JMS&MQ,从入门到精通(四)
- HTC one 数字雨矩阵 安卓开机动画