B3615 测测你的矩阵乘法

这题无需多疑,就是模板题,我们有公式 cij=k=1n(aik×bkj)c_{i_j}=\sum_{k=1}^n (a_{i_k} \times b_{k_j})

然后根据公式模拟即可。

代码:

#include <cstdio>
#include <cstring>
const int n = 512, N = n;

void multiply (int c[N][N], int a[N][N], int b[N][N]) {
    // c = a * b
    for (int i = 0; i < n; i++) 
    {
    	for (int j = 0; j < n; j++)
    	{
    		for (int k = 0; k < n; k++) c[i][j] += a[i][k] * b[k][j];
		}
	}
}

int c[N][N], a[N][N], b[N][N];
int main() {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            a[i][j] = (i | j) + j;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            b[i][j] = (i & j) + i;
    multiply(c, a, b);
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = 0; j < n; j++) sum ^= c[i][j];
        printf("%d\n", sum);
    }
}
posted @ 2022-02-18 18:01  HappyBobb  阅读(17)  评论(0)    收藏  举报  来源