페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
30000
ms
메모리 제한
1024
MB
시작점인 음이 아닌 정수 와 끝점인 음이 아닌 정수 가 주어진다. 와 는 모두 이진 표현으로 주어진다(즉, 밑이 인 표기법으로 쓰여 주어진다). 목표는 를 로 변환하는 것이다. 다음 두 연산을 사용할 수 있다:
현재 값을 두 배로 만든다.
현재 값에 비트 단위 NOT을 취한다. 현재 값의 이진 표현은 불필요한 선행 영 없이 사용하며, 연산으로 생긴 불필요한 선행 영은 제거한다. (필요한 유일한 선행 영은 의 표현에 있는 영이다.)
예를 들어, 두 배 연산을 사용하면 는 가 되고, 는 가 되며, 는 가 된다. NOT 연산을 사용하면 는 가 되고, 는 가 되며, 는 가 되고, 는 가 되며, 는 가 되고, 는 가 된다. (는 이진 표현이 인 정수를 뜻한다.)
이 연산들을 원하는 만큼 어떤 순서로든 사용할 수 있다. 예를 들어, 먼저 NOT 연산을 사용하고, 이어서 두 배 연산을 두 번 사용한 다음, 다시 NOT 연산을 사용하여 을 로 변환할 수 있다:
변환을 완료하는 데 필요한 최소 연산 횟수를 구하거나, 불가능하다고 답한다.
시간 제한: 10초.
메모리 제한: 1 GB.
.
의 각 문자는 0 또는 1이다.
의 첫 자릿수는 의 길이가 일 때만 0일 수 있다.
의 각 문자는 0 또는 1이다.
의 첫 자릿수는 의 길이가 일 때만 0일 수 있다.
의 길이는 . 의 길이는 .
의 길이는 . 의 길이는 .
입력의 첫 줄에는 테스트 케이스의 수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다. 각 테스트 케이스는 한 줄로 이루어지며, 시작 정수와 끝 정수의 이진 표현인 두 문자열 와 가 각각 주어진다.
각 테스트 케이스마다 Case #$x$: $y$를 포함하는 한 줄을 출력한다. 여기서 는 테스트 케이스 번호이며(1부터 시작), 두 연산을 사용하여 를 로 변환할 방법이 없다면 은 IMPOSSIBLE이다. 그렇지 않다면 는 를 로 변환하는 데 필요한 최소 연산 횟수이다.
6
10001 111
1011 111
1010 1011
0 1
0 101
1101011 1101011
Case #1: 4
Case #2: 3
Case #3: 2
Case #4: 1
Case #5: IMPOSSIBLE
Case #6: 0
예제 케이스 #1은 문제 본문에 제시된 예시이다.
예제 케이스 #2, #3, #4을 각각 해결하는 가능한 최적의 방법은 다음과 같다:
예제 케이스 #5에서는 어떤 연산 순서를 사용해도 에서 으로 갈 수 없다.
예제 케이스 #6에서는 이므로 어떤 연산도 수행할 필요가 없다.
Copyright Google LLC; sourced from the Google Coding Competitions Archive.
로그인 상태를 확인하는 중입니다.