[BOJ 1465] 배열 고치기
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
4
Time limit:
2.0s
Memory limit:
128M
Problem types
Allowed languages
어떤 배열 A가 주어졌을 때, 이 배열과 크기가 같고, 배열에 속하는 모든 원소 X가 low <= X <= high이며, 새로 바꾼 배열을 B라고 했을 때, A[i]와 B[i]의 비트 차이가 최소인 배열 B를 출력하는 프로그램을 작성하시오. 만약 B가 여러개일 경우에는 사전순으로 먼저오는 것을 출력한다.</p>
어떤 수 a와 b의 비트 차이를 계산하는 방법은, a를 이진수로 바꾸고, b도 이진수로 바꾼다. 만약 두 수의 길이가 서로 다르다면, 길이가 같아질 때 까지 짧은 이진수의 왼쪽에 0으로 채운다. 그 뒤에 각자리의 비트가 차이나는 것의 개수를 채우면 된다.
입력 형식
첫째 줄에 A의 크기 N과 두 정수 low, high가 주어진다. 둘째 줄에는 배열 A의 원소 Ai가 공백으로 구분되어 주어진다.
출력 형식
첫째 줄에 배열 B의 원소를 공백을 사이에 두고 출력한다.
예제 입력 1
1 101 105
71
예제 출력 1
103
예제 입력 2
5 98 304
12 65 302 1 1000000
예제 출력 2
140 193 302 129 192
예제 입력 3
1 16 16
1000000
예제 출력 3
16
예제 입력 4
1 83 92
48
예제 출력 4
84
예제 입력 5
3 1 4
5 6 7
예제 출력 5
1 2 3
Comments