소개
이 문제를 해결하려면 정수 이진 표현의 후행 0을로 설정해야합니다 010101…
.이 예는 다음과 같이 가장 잘 설명됩니다.
integer가 주어지면 400
첫 번째 단계는 이진수로 변환하는 것입니다.
110010000
우리가 볼 수 있듯이 다섯 번째 비트는 최하위 1
비트이므로 거기에서 시작하여 하위 0을 0101
다음과 같이 바꿉니다 .
110010101
마지막으로 우리는 이것을 십진수로 다시 변환합니다 : 405
도전
양의 정수 리턴 / 출력이 주어지면 위에 정의 된 프로세스의 해당 결과 값이 제공됩니다.
규칙
- 이 시퀀스는 하나 이상의
1
비트 가있는 정수에만 정의 되므로 입력은 항상 1 이상입니다. - 대신 문자열, 숫자 목록 (10 진수)으로 입력 할 수 있습니다.
- 유효하지 않은 입력을 처리 할 필요가 없습니다
테스트 케이스
다음은 중개 단계가 포함 된 몇 가지 테스트 사례입니다 (인쇄 / 반환 할 필요는 없음).
In -> … -> … -> Out
1 -> 1 -> 1 -> 1
2 -> 10 -> 10 -> 2
3 -> 11 -> 11 -> 3
4 -> 100 -> 101 -> 5
24 -> 11000 -> 11010 -> 26
29 -> 11101 -> 11101 -> 29
32 -> 100000 -> 101010 -> 42
192 -> 11000000 -> 11010101 -> 213
400 -> 110010000 -> 110010101 -> 405
298 -> 100101010 -> 100101010 -> 298
n
입력을 나누는 최대 2의 거듭 제곱이면 답은 간단합니다.(input) + ceil((2^n - 2)/3)