博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
阅读量:5306 次
发布时间:2019-06-14

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

职务地址:

题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是相应位置分别相加)。输出的数据mod m。

k<=10^9。

    这道题两次二分,相当经典。首先我们知道,A^i能够二分求出。

然后我们须要对整个题目的数据规模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)
    应用这个式子后,规模k减小了一半。我们二分求出A^3后再递归地计算A + A^2 + A^3。就可以得到原问题的答案。

代码例如以下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int mod;int n;struct matrix{ int ma[40][40];}init, res;matrix Mult(matrix x, matrix y){ int i, j, k; matrix tmp; memset(tmp.ma,0,sizeof(tmp.ma)); for(i=0;i
>=1; } return tmp;}matrix add(matrix x, matrix y){ int i, j; matrix tmp; for(i=0;i

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4723707.html

你可能感兴趣的文章
Oracle中创建数据链
查看>>
Appium环境搭建(Mac版)
查看>>
通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其Java实现!...
查看>>
以太坊(二)安装Solidity编译器
查看>>
Niginx简单的配置
查看>>
从关联数组中取得键名
查看>>
112. Path Sum
查看>>
谈首次软工作业感受_苏若
查看>>
培训班出来的你还好吗
查看>>
vim 简单配置
查看>>
LightOJ 1029 【最小生成树】
查看>>
FZU2216【二分】
查看>>
[HNOI2008]Cards
查看>>
拖拉记录上下移动--Ajax UI
查看>>
摄像头标定
查看>>
[SOF] Pointers, smart pointers or shared pointers?
查看>>
I/O-<File区别>
查看>>
Android Studio打包全攻略
查看>>
spring boot jar的生成
查看>>
HTML-重新排版快捷键 Ctrl+K+D
查看>>