#include <stdio.h>
int num[100][100]={0};
int line1[100]={0};
int line2[100]={0};
int line1_cal(int n); //행의 합 계산
int line2_cal(int n); //열의 합 계산
int main(void)
{
int n, i, j, a1, a2;
scanf(" %d", &n);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
scanf(" %d", &num[i][j]);
}
//-1=오류 없음 -2=오류가 많음 그외=오류가 행과 열에 각각 하나씩 존재
a1=line1_cal(n);
a2=line2_cal(n);
if(a1==-1 && a2==-1)
printf("OK");
else if(a1>=0 && a2>=0)
printf("Change bit (%d,%d)", a1+1, a2+1);
else
printf("Corrupt");
return 0;
}
int line1_cal(int n)
{
int i, j, a, c=0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(num[i][j]==1)
line1[i]+=num[i][j];
}
//printf("1: %d - %d\n", i, line1[i]);
if(line1[i]%2!=0)
{
c++;
a=i;
}
}
if(c==0)
return -1;
else if(c==1)
return a;
else
return -2;
}
int line2_cal(int n)
{
int i, j, a, c=0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
line2[i]+=num[j][i];
}
//printf("2: %d - %d\n", i, line2[i]);
if(line2[i]%2!=0)
{
c++;
a=i;
}
}
if(c==0)
return -1;
else if(c==1)
return a;
else
return -2;
}
2018.06.09 09:17
정올 - 실전대비 - 오류교정(1037)
조회 수 212 추천 수 0 댓글 0