sysy-data/final_performance_c/sy/01_mm2.sy

96 lines
1.4 KiB
Plaintext

#include "sylib.h"
#define N 1024
void mm(int n, int A[][N], int B[][N], int C[][N])
{
int i, j, k;
i = 0;
j = 0;
while (i < n) {
j = 0;
while (j < n) {
C[i][j] = 0;
j = j + 1;
}
i = i + 1;
}
i = 0;
j = 0;
k = 0;
while (k < n) {
i = 0;
while (i < n) {
if (A[i][k] == 0) {
i = i + 1;
continue;
}
j = 0;
while (j < n) {
C[i][j] = C[i][j] + A[i][k] * B[k][j];
j = j + 1;
}
i = i + 1;
}
k = k + 1;
}
}
int A[N][N];
int B[N][N];
int C[N][N];
int main()
{
int n = getint();
int i, j;
i = 0;
j = 0;
while (i < n) {
j = 0;
while (j < n) {
A[i][j] = getint();
j = j + 1;
}
i = i + 1;
}
i = 0;
j = 0;
while (i < n) {
j = 0;
while (j < n) {
B[i][j] = getint();
j = j + 1;
}
i = i + 1;
}
starttime();
i = 0;
while (i < 5) {
mm(n, A, B, C);
mm(n, A, C, B);
i = i + 1;
}
int ans = 0;
i = 0;
while (i < n) {
j = 0;
while (j < n) {
ans = ans + B[i][j];
j = j + 1;
}
i = i + 1;
}
stoptime();
putint(ans);
putch(10);
return 0;
}