fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. //XOR 연산
  5. bool checking(int a, int b, int c, int d)
  6. {
  7. return a ^ b ^ c ^ d;
  8. }
  9.  
  10. //XOR 연산 결과에 따른 오류 위치 값 확인
  11. void check(string& x)
  12. {
  13. bool a = checking(x[0] - '0', x[2] - '0', x[4] - '0', x[6] - '0');
  14. bool b = checking(x[1] - '0', x[2] - '0', x[5] - '0', x[6] - '0');
  15. bool c = checking(x[3] - '0', x[4] - '0', x[5] - '0', x[6] - '0');
  16.  
  17. int index;
  18. index = a * 1 + b * 2 + c * 4 - 1; //오류 위치값 2진수에서 십진수로
  19.  
  20. //오류가 있다면 실행
  21. if (index >= 0) {
  22. //오류 위치값 반대로 저장
  23. if (x[index] - '0') x[index] = 0 + '0';
  24. else x[index] = 1 + '0';
  25. }
  26. }
  27.  
  28. int main(void)
  29. {
  30. int t;
  31. cin >> t;
  32.  
  33. while (t--)
  34. {
  35. string arr;
  36. cin >> arr;
  37. check(arr);
  38.  
  39. cout << arr[2] << arr[4] << arr[5] << arr[6] << endl;
  40. }
  41. }
Success #stdin #stdout 0s 5532KB
stdin
2
0100011
1111111
stdout
1011
1111