矩阵的乘法
矩阵的乘法是《线性代数》中的基础内容。
乘法规则:(行数和列数)只有当相乘的两个矩阵的左矩阵的列数等于右矩阵的行数时,才能相乘。(详细详看《线性代数》)
矩阵的乘法的规则用一句话来描述就是第一个矩阵A的第i行和第二个矩阵B的第j列的各m个元素对应相乘再相加就得到新矩阵C[i][j]的值。
如图:

代码实现:
cpp
//代码实现
//n行k列
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= k; ++j) {
//再次枚举n行j列的所有元素
for (int t = 1; t <= m)//A的这一行和B的这一列有m个元素
{
c[i][j] += a[i][t] * b[t][j];
}
}
}
整除
在计算机中,整数之间的除法往往时整除且向下取整的。
如果要计算x/y向上取整,需要(x+y-1)/y或者(x-1)/y+1。
同余
同余时数论中非常重要的概念,意思时两个或多个数字x,对于一个模数M的余数是相等的,或者说在模M的意义下它们是相等的。
GCD(最大公约数)
GCD是最大公约数,LCM是最小公倍数,大多数情况下,我们更关注GCD。
C++函数调用:_gcd(a,b)和_lcm(a,b);
辗转相除法求GCD
代码:
cpp
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
LCM求解方法
代码:
cpp
int lcm(int a, int b) {
return a / gcd(a, b) * b;
}