只能默默地说这题真坑爹啊。。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int const MAXN = 810; int const MOD = 3; int a[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN]; void Init(){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); } void Add(int n){ for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ if(!a[i][j]) continue; for(int k = 1;k <= n;k++){ c[i][k] = c[i][k] + a[i][j] * b[j][k]; } } } } int main(){ int n; while(~scanf("%d",&n)){ Init(); for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ scanf("%d",&a[i][j]); a[i][j] %= MOD; } } for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ scanf("%d",&b[i][j]); b[i][j] %= MOD; } } Add(n); for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ if(j != n) printf("%d ",c[i][j] % MOD); else printf("%d\n",c[i][j] % MOD); } } } return 0; }