標籤:矩陣
http://acm.hdu.edu.cn/showproblem.php?pid=4920
被這道題虐了一下午,啥也不說了。繼續矩陣吧。
逾時就超在每步取餘上,要放在最後取餘,再者注意三個迴圈的次序。
#include <stdio.h>#include <map>#include <set>#include <stack>#include <queue>#include <vector>#include <cmath>#include <stdio.h>#include <stdlib.h>#include <cstring>#include <iostream>#include <limits.h>#include <algorithm>#define LL long long#define _LL __int64using namespace std;const int maxn = 810;int a[maxn][maxn],b[maxn][maxn];int ans[maxn][maxn];int n;int main(){while(~scanf("%d",&n)){for(int i = 0; i < n; i++)for(int j = 0; j < n; j++){scanf("%d",&a[i][j]);a[i][j] %= 3;}for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){scanf("%d",&b[i][j]);b[i][j] %= 3;}}memset(ans,0,sizeof(ans));for(int i = 0; i < n; i++){for(int k = 0; k < n; k++){if(a[i][k] == 0) continue;for(int j = 0; j < n; j++){ans[i][j] += a[i][k]*b[k][j];}}}for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){printf("%d",ans[i][j]%3);if(j == n-1)printf("\n");elseprintf(" ");}}}return 0;}