題目連結: https://zerojudge.tw/ShowProblem?problemid=b005

# 解題思路

計算各個橫排跟直列的總數分開計算,如果橫排跟直列都有剛好一個奇數的總和就可以剛好轉換一次,如果全部都是偶數就以符合題意,其他就是 "Corrupt"。

# 程式碼

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int m[n][n],ap_c=0,ap_r=0,change_i,change_j;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                cin>>m[i][j];
        for(int i=0;i<n;i++){
            int sum=0;
            for(int j=0;j<n;j++) sum+=m[i][j];
            if(sum%2==1) { ap_c++;  change_i=i; }
        }
        for(int i=0;i<n;i++){
            int sum=0;
            for(int j=0;j<n;j++) sum+=m[j][i];
            if(sum%2==1) { ap_r++;  change_j=i;}
        }
        if(ap_r==1&&ap_c==1) printf("Change bit (%d,%d)\n",change_i+1,change_j+1);
        else if(!ap_r&&!ap_c) printf("OK\n");
        else printf("Corrupt\n");
    }
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay