2017-12-23 28 views
-1

나는 짝수 번 발생하는 1 요소를 제외한 모든 요소를 ​​포함하는 정수 배열의 모든 요소를 ​​XOR하는 것은 홀수로 발생하는 번호를 제공한다는 것을 알고 있습니다. 횟수.비트 조작을 사용하는 배열에서 0이 홀수 회 발생하면 찾을 수 있습니까?

{1, 1, 2, 2, 3}
1^1^2^2^3 = 3;

^는

회 발생하는 홀수 번호가 0 인 경우는 어떻게 XOR입니까?
{1, 1, 2, 2, 0} 0 번 홀수로 발생되는 것을 확인하는 방법

1^1^2^2^0 = 0 // Both give 
1^1^2^2 = 0  // same answer 


PS/C++

+0

이 아마도 당신이 비트 연산자가 작동하는 방법을 배울 수있는 시간이 좀 걸릴 방법입니까? 원하는 언어로만 선택하는 것이 아니라 C 및 C++은 매우 다른 두 언어입니다. 일반적으로 선택하십시오. –

+0

당신이 이미 자신의 질문에 대답 한 것 같습니다. "0은 단 하나의 숫자"에서 "유일한 쌍"에 대해 0을 말할 수 없습니다. 그래서 당신이 필요로하는 것은 짝수/홀수의 0을 찾는 두 번째 방법입니다. 그것을 뒤돌아 보자. XOR 만하는 것이 아니다. – Yunnosch

+1

그 마지막 것은 "짝수 번 발생하는 1 요소를 제외한 모든 요소를 ​​포함하는 정수 배열"의 예가 아닙니다. 따라서이 트릭이 의미있는 일을하지 않는다는 것은 놀라운 일이 아닙니다. –

답변

2
C 판정 응답 코드 안함

의가 N, 배열의 요소 수를 부르 자 :

  • (N은 짝수) 경우 AND (모든 요소를 ​​XOR 연산 == 0) -> 모든 요소는 시간
  • 짝수 발생
  • (N은 홀수) AND (모든 요소를 ​​XORing == 0) -> 단일 요소가 0입니다.

이것은에 check if an integer is even or odd in C/C++