10010 >> 다음 숫자 : 10100 앞 숫자 : 10001 풀이 : 오른쪽에 1이 있는 첫 0과 그 1을 스왑하면 (반대로 얘기하면 바로 옆이 비어있는 첫 1) 다음 숫자이다. ***오른쪽이 비어있는 첫 1을 그 오른쪽으로 밀면 바로 작은값왼쪽이 비어있는 첫 1을 그 왼쪽으로 밀면 바로 큰값01 >> 큰값10 >> 작은값 pair (int n){// base casesif(n==0) return pair(0,1);if(n==-1) return pair(-2,0);int m = 1;int bigger = 0;int smaller = 0;int preflag = m&n;m = m1));}if(preflag==0&&n&m!=0){// smaller foundsmaller = n^(m^(m>>1));}if..