#B3615. 测测你的矩阵乘法
测测你的矩阵乘法
题目描述
给定两个大小为均为 ,每个元素均为整数,值域为 矩阵 ,定义为
其中 。
请计算 。
输入格式
输入为两个整数 ()。
你可以使用以下代码模板,完成其中的 multiply
即可。
你可以修改 (即数组长度),但是不能修改 (矩阵大小,恒为 )。
输出格式
输出 行,分别是 每行的异或和。
输入中的代码会帮助你完成输出。
给定两个大小为均为 512×512,每个元素均为整数,值域为 [0,1024) 矩阵 A,B,定义为
A[i,j]B[i,j]=((iorj)+j)xorseedA=((iandj)+i)xorseedB其中 i,j∈[0,512)。
请计算 C=A×B。
输入为两个整数 seedA,seedB(0≤seedA,seedB<1024)。
你可以使用以下代码模板,完成其中的 multiply
即可。
你可以修改 N(即数组长度),但是不能修改 n(矩阵大小,恒为 512)。
#include <bits/stdc++.h>
const int n = 512, N = n;
void multiply (int c[N][N], int a[N][N], int b[N][N]) {
// c = a * b
}
int c[N][N], a[N][N], b[N][N];
int main() {
int seedA, seedB;
scanf("%d%d", &seedA, &seedB);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
a[i][j] = ((i | j) + j) ^ seedA;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
b[i][j] = ((i & j) + i) ^ seedB;
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);
}
}
输出 512 行,分别是 C 每行的异或和。
输入中的代码会帮助你完成输出。