主页
搜索
最近更新
数据统计
赞助我们
系统公告
1
/
1
请查看完所有公告
题解:P1001 A+B Problem
最后更新于 2025-06-15 13:31:26
作者
xxr___
分类
题解
题解
P1001
复制 Markdown
查看原文
更新内容
怎么不写矩阵乘法? 首先我们需要知道矩阵乘法,两个矩阵 $A$ 和 $B$ 相乘的结果是 $C$。 我们设 $A_{i,j}$ 表示 $A$ 矩阵的第 $i$ 行第 $j$ 个元素,$B_{i,j}$ 表示 $B$ 矩阵的第 $i$ 行第 $j$ 个元素,那么有公式 $C_{i,j}=\sum_k A_{i,k} \times B_{k,j}$。 好的,相信聪明的你已经学会了矩阵乘法,再来看看这个题,我们可以令 $A$ 矩阵是 $\begin{bmatrix} 1 & 1 \end{bmatrix}$ 令 $B$ 矩阵是 $\begin{bmatrix} a \\ b\end{bmatrix}$ 那么 $A\times B$ 的结果就是 $\begin{bmatrix} a + b & 0\\ 0 & 0\end{bmatrix}$ 了。 代码: ```cpp #include<iostream> struct Matrix{ int g[2][2]; Matrix (){ for(int i = 0;i < 2; ++ i){ for(int j = 0;j < 2; ++ j){ g[i][j] = 0; } } } }; inline Matrix operator * (const Matrix & x,const Matrix & y){ Matrix z; for(int i = 0;i < 2; ++ i){ for(int j = 0;j < 2; ++ j){ for(int k = 0;k < 2; ++ k){ z.g[i][j] += x.g[i][k] * y.g[k][j]; } } } return z; } int main(){ Matrix A,B; int a,b; std::cin >> a >> b; A.g[0][0] = 1; A.g[0][1] = 1; B.g[0][0] = a; B.g[1][0] = b; A = A * B; std::cout << A.g[0][0]; return 0; } ```
正在渲染内容...
点赞
32
收藏
1