Chênh lệch BCD
Cho một số nguyên n, chuyển đổi nó thành BCD ( số thập phân được mã hóa nhị phân ) bằng cách thay thế mỗi chữ số thập phân bằng biểu diễn nhị phân 4 chữ số của nó
234 -> 0 0 1 0 0 0 1 1 0 1 0 0
Sau đó xoay danh sách các chữ số nhị phân để tìm các số lớn nhất và nhỏ nhất, có thể được đại diện bởi danh sách này mà không cần sắp xếp lại.
max: 1 1 0 1 0 0 0 0 1 0 0 0 (the entire list rotated left 6 times)
min: 0 0 0 0 1 0 0 0 1 1 0 1 (the entire list rotated right 2 times)
Chuyển đổi các số này thành số thập phân, coi danh sách các bit là nhị phân thông thường và trừ số nhỏ nhất từ số lớn nhất:
1 1 0 1 0 0 0 0 1 0 0 0 -> 3336
0 0 0 0 1 0 0 0 1 1 0 1 -> 141
3336 - 141 -> 3195
Đầu ra là sự khác biệt của các số lớn nhất và nhỏ nhất được tìm thấy.
Các trường hợp thử nghiệm:
234 -> 3195
1234 -> 52155
12 -> 135
975831 -> 14996295
4390742 -> 235954919
9752348061 -> 1002931578825
Max@#-Min@#&
tiết kiệm một byte. đúng?