算法题目:A为矩阵,求S(n)=A^1+A^2+...+A^n 小技巧
来源:互联网 发布:java线程池创建的方式 编辑:程序博客网 时间:2024/04/19 12:35
解题思路:
第一种方法:
题意为给定矩阵A,以及k, mod ,求 A+A^2+A^3+......A^k 的和对mod取余。
一开始用循环k次,递推的做法,超时。。。
看了解题报告,求和的时候要用到二分求和。
所求的和用s(k)表示。
当k为偶数时:
比如 k=6,那么 A+A^2+A^3+A^4+A^5+A^6= A+A^2+A^3+ A^3*(A+A^2+A^3)
s(k)=s(k/2)+A^(n/2) * s(k/2) 即s(k)=(E+A^(n/2))*s(n/2) (E为单位矩阵)
当k为奇数时:
s(k)=s(k-1)+A^k , 那么k-1为偶数,可以按照上面的二分
matrix call(matrix A,int k) { if(k==1) return A; if(k&1) return addmatrix(call(A,k-1),powmatrix(A,k));//当k为奇数时,减1变为偶数 S(K)=S(K-1)+A^K else return mulmatrix(addmatrix(powematrix(A,0),powmatrix(A,k>>1)),call(A,k>>1)); //当K为偶数时,S(K)=(1+A^(K/2))*S(K/2) }
阅读全文
0 0
- 算法题目:A为矩阵,求S(n)=A^1+A^2+...+A^n 小技巧
- a(n+2)-4a(n+1)+4a(n) = 0 现在知道a(0) = x, a(10^8) = y, 求a((10^8)/2)
- 2012腾讯 实习生笔试题目b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];
- 已知n阶矩阵A的行列式满足|A|=1,求|A^(-1)|(A^(-1)表示A的逆矩阵)=?
- 求Sn = a + aa + aaa +... + a.....a 的值,其中a为数字,n为最后一个数字中a的位数,a和n由键盘输入。
- 求A*f(A,B,n-1)+B*f(A,B,n-2))%7;
- 求a^n的O(nlgn)算法
- printf("%d %s\n",a,a);
- 已知数组a[n],求数组b[n].要求:b[i]=a[0]*a[1]*……*a[n-1]/a[i],不能用除法。
- N/A
- N/A
- N/A
- 求s=a+aa+aaa+aaaa+aa…a(n个a)之值,其中a是一个数字。例如:1+11+111+1111+...
- Manchester- 求s=a+aa+aaa+aaaa+aa...a的值(n为1亿都ok,可正负,带图解)
- 求 X^a mod N
- 求a的N次方
- 求a^n的尾数
- Uva 10655 已知a+b,ab 求a^n+b^n 矩阵快速幂
- 目标检测之一(传统算法和深度学习的源码学习)
- 关于堆的操作
- 更新boot后,WLAN无法使用
- DAY4-2017-11-20
- Gradle 与 Android的三生三世:是我构建了你,你必将依赖于我
- 算法题目:A为矩阵,求S(n)=A^1+A^2+...+A^n 小技巧
- 区分string中的字母和汉字
- CocosCreator的ToggleGroup组件使用
- 买一台 iPhone X,还是创建一家未来的独角兽?
- Otter单向同步配置
- java基础系列之sleep、wait、yield、interrupt
- spring web项目启动报错,java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.<init>
- Hive安装及启动异常解决
- Ajax的应用和理解