그 자체로 n 번 k를 XOR하고 싶습니다. 가장 쉬운 방법은 루프 내에서 n 번 반복하는 것입니다. 더 좋은 방법이 있습니까?같은 번호를 XOR하는 방법은 무엇입니까?
int t = k;
for(int i = 0; i < n; i++) k = k^t;
그 자체로 n 번 k를 XOR하고 싶습니다. 가장 쉬운 방법은 루프 내에서 n 번 반복하는 것입니다. 더 좋은 방법이 있습니까?같은 번호를 XOR하는 방법은 무엇입니까?
int t = k;
for(int i = 0; i < n; i++) k = k^t;
XORing N 개의 K 사본은 N이 홀수이면 K를 생성하고 N이 짝수이면 0을 생성합니다. K^K == 0, 0^K == K, 모든 추가 K와 함께 그 결과가 번갈아 바뀝니다. (귀하의 코드는 현재 n + 1 개의 k 사본을 XOR하여 실수로 추측합니다.)
int result = (n % 2 == 1) ? k : 0;
0의 숫자 결과의 XOR's
의 짝수 : 해당 번호에 숫자 결과의 XOR's
의 k^k = 0
홀수 : 따라서 k^k^k = k
, 당신은 자신하지 XOR the number
필요 n
횟수를 최종 결과를 확인하십시오.
실제로 XOR을 전혀 할 필요가 없습니다. n
이 짝수 또는 홀수인지 확인하십시오.
return (n & 1) == 0 ? 0 : k
even even (n & 1) = 0
| 이상한 경우 (n & 1) = 1
'(n % 2 == 1)? k : 0 '이다. – user2357112
잠시만 기다려주십시오. 코드가 영어와 일치하지 않습니다. 당신은 자신과 XOR k하고 싶다고하지만, 당신의 코드는 그것을 다른 숫자와 XOR합니다. – user2357112
편집 된 질문 –