uva11149 - Power of Matrix 矩阵倍增

20、啁啾脉冲光纤放大器:原理、设计与仿真 本文详细介绍了啁啾脉冲光纤放大器(FCPA)的原理、设计与仿真过程。内容涵盖CPA技术的基本原理、光纤基CPA系统的组成、Tm掺杂光纤放大器的工作机制、全光纤脉冲展宽器的设计以及仿真分析。通过MATLAB仿真展示了脉冲在光纤中的展宽与放大过程,并讨论了如何优化系统以减少非线性失真、控制峰值功率并提高整体性能。文章还总结了系统优化的关键策略,并展望了未来的发展方向。 阅读详情

Consider an n-by-n matrixA. We define Ak = A *A * ... * A (k times). Here, * denotes the usual matrix multiplication.

You are to write a program that computes the matrix A + A2 + A3 + ... + Ak.

Example

Suppose A = . ThenA2 = =, thus:

Such computation has various applications. For instance, the above example actually counts all the paths in the following graph:

Input

Input consists of no more than 20 test cases. The first line for each case contains two positive integersn (≤ 40) and k (≤ 1000000). This is followed by n lines, each containing n non-negative integers, giving the matrixA.

Input is terminated by a case where n = 0. This case need NOT be processed.

Output

For each case, your program should compute the matrix A + A2 + A3 + ... + Ak. Since the values may be very large, you only need to print theirlast digit. Print a blank line after each case.

Sample Input

3 2
0 2 0
0 0 2
0 0 0
0 0

Sample Output

0 2 4
0 0 2
0 0 0

  计算A+A^2+A^3...+A^k。

  当k是偶数,A+A^2+A^3...+A^k=(E+A^(k/2))*(A+A^2...+A^(k/2))。当k是奇数,A+A^2+A^3...+A^k=(E+A^(k/2))*(A+A^2...+A^(k/2))+A^k。

  类似二分的思想。话说被重载运算符优先级坑了,看来以后重载运算符要打括号啊。。

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#define INF 0x3f3f3f3f
#define MAXN 45
#define MAXM 110
#define MOD 1000000007
#define MAXNODE 4*MAXN
#define eps 1e-9
using namespace std;
typedef long long LL;
int N,K;
struct Mat{
    int mat[MAXN][MAXN];
    Mat(){
        memset(mat,0,sizeof(mat));
    }
};
Mat operator * (Mat a,Mat b){
    int i,j,k;
    Mat ret;
    for(k=0;k<N;k++){
        for(i=0;i<N;i++){
            if(a.mat[i][k]==0) continue;
            for(j=0;j<N;j++){
                if(b.mat[k][j]==0) continue;
                ret.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
                ret.mat[i][j]%=10;
            }
        }
    }
    return ret;
}
Mat operator + (Mat a,Mat b){
    Mat ret;
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++) ret.mat[i][j]=(a.mat[i][j]+b.mat[i][j])%10;
    return ret;
}
Mat operator ^ (Mat a,int n){
    Mat ret,t=a;
    int i,j;
    for(i=0;i<N;i++)
        for(j=0;j<N;j++) ret.mat[i][j]=(i==j);
    while(n){
        if(n&1) ret=ret*t;
        t=t*t;
        n>>=1;
    }
    return ret;
}
Mat solve(Mat a,int k){
    if(k==1) return a;
    Mat ans;
    for(int i=0;i<N;i++) ans.mat[i][i]=1;
    if(k==0) return ans;
    ans=((a^(k>>1))+ans)*solve(a,k>>1);
    if(k%2) ans=(a^k)+ans;
    return ans;
}
Mat a,ans;
int main(){
    freopen("in.txt","r",stdin);
    while(scanf("%d%d",&N,&K)!=EOF&&N){
        for(int i=0;i<N;i++)
            for(int j=0;j<N;j++){
                int t;
                scanf("%d",&t);
                a.mat[i][j]=t%10;
            }
        ans=solve(a,K);
        for(int i=0;i<N;i++){
            for(int j=0;j<N-1;j++) printf("%d ",ans.mat[i][j]);
            printf("%d\n",ans.mat[i][N-1]);
        }
        puts("");
    }
    return 0;
}




VLA仿真平台:Isaac sim、MuJoCo 在虚拟仿真领域,VLA(Virtual Learning Agent)仿真器是用于开发和训练虚拟机器人代理的环境,它们为机器人提供了一个平台来进行各种任务的模拟和学习,特别是在强化学习(RL)中。两款广泛应用的仿真器是和。这两者各有其特点和优势,适用于不同类型的机器人研究和开发。 阅读详情

相关推荐

PLC期末速成——顺序功能图转梯形图

一、根据顺序功能图写出梯形图程序 顺序功能图: 梯形图: 1、程序段1,系统运行标志M0.0的启-保-停控制电路。 2、程序段2,PLC上电与逆行,初始化脉冲M1.0激活初始化步M2.0。 3、程序段3,当M2.0初始化步为活动步,并且M0.0系统运行标志位为1时,置位M2.1步,复位M2.0步。 4、当M2.1为活动步,并且I0.3中液位传感器为1时,置位M2.2步,复位M2.1步。 5、程序段5,当M2.2为活动步,并且I0.2高液位传感器为1时,置位M2.3步,复位M2.2步。 6、程序段

qq_52251819的博客 1万+

UVA11149 Power of Matrix —— 矩阵倍增、矩阵快速幂

题目链接:https://vjudge.net/problem/UVA-11149 题意: 给出矩阵A,求出A^1 + A^2 …… + A^k 。 题解: 1.可知:A^1 + A^2 …… + A^k = (1+A^k/2)*(A^1 + A^2 …… + A^k/2)+ (k%2?A^k:0)。 2.根据上述式子,可二分对其求解。 ...

alince20008的博客 182

基于FPGA的 SelectIO IP核 的仿真验证-----( LVDS差分高速传输)

SelectIO IP核 的仿真验证

qq_43618170的博客 1万+

uva 11149 - Power of Matrix(矩阵倍增)

题目链接:uva 11149 - Power of Matrix 题目大意:给定一个矩阵,求∑ikAi 解题思路:因为k比较大,所以即使用快速幂的话复杂度还是有点高,利用矩阵倍增的方法∑ikAi=(1+Ak/2)∗∑ik/2Ai #include #include #include using namespace std; const int maxn = 50; const

不慌不忙、不急不躁 1643

Android 15网络子系统深度解析(一):ConnectivityService与网络管理框架全解析

深入剖析Android 15核心网络服务ConnectivityService的架构设计、NetworkAgent/Factory机制、网络状态管理、以及WiFi/移动网络切换的完整流程

Cheson的专栏 1749

深入浅出DNS系列(一)- DNS杂谈

黄丝玛:班达山,你好,我记性不好,你告诉我搜狐、新浪的网站IP地址好吗? 班达山:你问问DNS先生吧,他专门干这买卖的

jiangsd198的博客 4129

UVA 11149 - Power of Matrix(矩阵倍增)

UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞,∑kiAi=(1+Ak/2)∑k/2iAi,不断二分即可 代码: #include #include const int N = 45; int n, k; struct mat { int v[N][N]; mat()

Remilia's 1969

《涨知识啦29》-DBR的工作原理及其在VCSEL中的作用

分布式布拉格(Distributed Bragg Reflection,简称DBR)反射镜是垂直腔面发射激光器(Vertical-Cavity Surface-Emitting Laser,简称VCSEL)的重要组成部分。典型的DBR反射镜是由1/4ni波长厚度的高折射率和低折射率材料交替组成(ni是该层的折射率)。其反射率取决于组成对数、边界条件以及折射率差。 图1 布拉格反射镜的工作原理 DBR反射镜的工作原理如图1所示。根据反射原理,当光从光疏介质n1射向光密介质n2(折射率n2>n1)时,反

simucal的博客 7982

uva 11149 - Power of Matrix 【倍增 + 矩阵快速幂】

题意:给你一个n*n的矩阵A,现在要你求出矩阵A + A^1 + A^2 + ... + A^k。 只输出最后一位数字。 思路:倍增法 对于矩阵res = A + A^1 + ... + A^k 若k&1,则有res = (A + A^1 + ... + A^(k/2)) + (A + A^1 + ... + A^(k/2)) * A^(k/2) + A^k。 若k%2==0,则有

世界很大 678

Buck电源设计常见的一些问题(一)半桥栅极驱动芯片共性失效问题

半桥驱动芯片主要用在器件可应用于电信,数据通信,便携式存储或更低电压系统中的电源转换器,半桥、全桥、推挽、同步降压,正激变换器和同步整流器等方面。当然难免会遇到不少问题。基本上我们在产品开发的过程中都遇到过栅极驱动芯片坏掉的情况,所以找了一些资料,学习学习。也查找查找原因。

小幽余生不加糖 2369

[QMT量化交易小白入门]-七十一、十年回测ETF动量策略,超额年化收益率为10.6%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1853

UVA - 11149 Power of Matrix(矩阵倍增)

题意:已知N*N的矩阵A,输出矩阵A + A2 + A3 + . . . + Ak,每个元素只输出最后一个数字。 分析: A + A2+ A3+ . . . + An可整理为下式, 从而可以用log2(n)的复杂度算出结果。 注意:输入时把矩阵A的每个元素对10取余,因为若不处理,会导致k为1的时候结果出错。 #include<cstdio> #inc...

Cherrychan2014的博客 192

【四足机器人实战】四足机器人运动学、动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!四足机器人的运动学和动力学模型是其设计和控制的基础,涉及到如何精确描述和预测机器人在不同条件下的运动状态和行为本文先对四足机器人运动学、动力学模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章运动学模型主要关注四足机器人的几何形态和时间序列下的运动特性,而动力学模型则进一步考虑了引起这些运动的力和扭矩的作用效果。运动学模型:运动学模型描述了四足机器人在没有考虑力的影响下的运动特性。

qq_35635374的博客 1055

Power of Matrix UVA - 11149(矩阵快速幂+二分或许叫倍增优化)

题目链接:点击打开链接 题目大意:求矩阵A+A^2+A^3....+A^k 题目思路:一开始也没什么思路,但是看到一篇博客。。。 今天我们学习如何有效地求表达式的值。对于这个问题,用二分解决比较好。   (1)当时, (2)当时,那么有      (3)当时,那么有     然后就照着撸就行了... 这里的关键就是提取的公因子,如果我们直接去计算的话那么显然是会

w571523631的博客 315

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Power of Matrix UVA - 11149(矩阵倍增)

题目链接:点我题意:给你一个矩阵 A, 让你求 A + A2A^{2} + A3A^{3} + A4A^{4} + A5A^{5} + …. AnA^{n},思路:矩阵倍增,那么怎么倍增呢, 令矩阵 S = A + A2A^{2} + A3A^{3} + A4A^{4} + A5A^{5} + … AnA^{n} = A + A2A^{2} + A3A^{3} + A4A^{4} + A5A^{

wood 380

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

UVA 11149.Power of Matrix-矩阵快速幂倍增

Power of Matrix UVA - 11149 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 #d...

weixin_30302609的博客 82

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

矩阵的运算 --- 倍增法(UVA11149 - Power of Matrix)

昨天我们介绍了矩阵的快速幂(点我),相信大家对于矩阵快速幂都有一定的了解。大家也就知道快速幂对于幂运算的迅速,但是当出现了这样的问题:         我们就会发现即便矩阵快速幂再快,我们计算和我们都是O(n)的算法。那么在这个问题上,我们研究问题的重心就从矩阵的幂,转化为了矩阵幂的和。光看这个好像也想不出什么,那么我们换一个角度来思考这个问题。我们现在是要让计算变得更快,对吧?那么怎么样才

Enstein_Jun 2803

UVA 11149(B)——Power of Matrix (矩阵快速幂,倍增法)

题目链接:点击打开链接 题目大意;输入n, k求出来n行n列的矩阵的1次幂 + 2次幂 + ... + k次幂的和 解题思路:为了控制时间,首先想到的是用快速幂,但是还有n项,所以求和所需要很多时间,可以用倍增来解决这个问题 代码: //UVA 11149矩阵快速幂,倍增 #include #include #include using namespace std; class Ma

江河湖海 558

矩阵的运算 --- 倍增法-矩阵连乘求和(UVA11149 - Power of Matrix)

相信大家对于矩阵快速幂都有一定的了解。大家也就知道快速幂对于幂运算的迅速,但是当出现了这样的问题: 我们就会发现即便矩阵快速幂再快,我们计算和我们都是O(n)的算法。那么在这个问题上,我们研究问题的重心就从矩阵的幂,转化为了矩阵幂的和。光看这个好像也想不出什么,那么我们换一个角度来思考这个问题。我们现在是要让计算变得更快,对吧?那么怎么样才能变得更快呢?时间复杂度的定义,就是从运算的次数来衡量时间...

Patrick的博客 970

uva11149 - Power of Matrix

矩阵幂、倍增

ACoder 210

【矩阵幂的和+矩阵快速幂】Power of Matrix UVA - 11149

Think: 1知识点:矩阵幂的和+矩阵快速幂 2题意:输入矩阵A,求A^1 + A^2 + … + A^(n) 3题意分析: (1):倍增法求矩阵幂的和,eg: 求:A^1 + A^2 + A^3 + A^4 + A^5 + A^6 + A^7 + A^8 + A^9 + A^10 (1):A^1 + A^2 + A^3 + A^4 + A^5 + A^6 + A^7 + A^8 +

BlessingXRY的博客 1301

UVA 11149 Power of Matrix 倍增法

#include #include #include #include using namespace std; #define maxn 44 #define mod 10 int n; struct matrix{ int f[maxn][maxn]; }; matrix sum(matrix a,matrix b) { int i,j; matrix s;

冷月之殇 1535

Uva 11149 Power of Matrix (倍增法/模板)

题意:给你一个矩阵A,求A+A^2+A^3+...+A^n的矩阵,输出这个矩阵的最后一位数字 思路:大神博客链接 :点我 代码: #include <cstdio> #include <cstring> #include <iostream> #include <cmath> using namespace std;...

140

UVA 11149 - Power of Matrix(矩阵乘法)

UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞。∑kiAi=(1+Ak/2)∑k/2iAi,不断二分就可以 代码: #include &lt;cstdio&gt; #include &lt;cstring&gt; const int N = 45; int n, k;...

weixin_34115824的博客 101

UVA-11149 Power of Matrix

倍增法求矩阵幂的和:https://blog.youkuaiyun.com/luomingjun12315/article/details/50824552 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&lt;cmath&gt; using...

wl16wzl的博客 200
上一篇: Codeforces Round #257 (Div. 2) D. Jzzhu and Cities
下一篇: hdu 4901 The Romantic Hero
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值