Cho một số nguyên num làm đầu vào. Mục tiêu là tìm số lượng số 0 đuôi trong biểu diễn nhị phân của num sử dụng bitset.
bitset lưu trữ các bit 0 và 1 trong nó. Nó là một mảng các bit.
Ví dụ
Đầu vào
num = 10
Đầu ra
Số 0 đuôi trong biểu diễn nhị phân dùng Bitset là: 1
Giải thích
Số 10 trong nhị phân được biểu diễn là 1010 nên số 0 đuôi là 1.
Đầu vào
num = 64
Đầu ra
Số 0 đuôi trong biểu diễn nhị phân dùng Bitset là: 6
Giải thích
Số 64 trong nhị phân được biểu diễn là 1000000 nên số 0 đuôi là 6.
Phương pháp sử dụng
Trong phương pháp này, chúng ta đang sử dụng bitset. Chúng ta sẽ thiết lập bitset với num bằng toán tử |. Bây giờ duyệt bitset bằng vòng lặp for, ngay khi gặp bit 1 đầu tiên thì thoát vòng lặp, ngược lại tăng biến đếm cho các số 0 đuôi.
- Nhận số nguyên
numlàm đầu vào. - Hàm
trailing_zeroes(int num)nhậnnumvà trả về số lượng số 0 đuôi trong biểu diễn nhị phân dùngbitset. - Khởi tạo biến đếm ban đầu là 0.
- Tạo một
bitset<64> arr. - Thiết lập nó với
numnhưarr |= num. - Duyệt
arrbằng vòng lặp for từi=0đếni<64. Nếuarr[i]là 0 thì tăng biến đếm, ngược lại thoát vòng lặp. - Trả về biến đếm làm kết quả ở cuối vòng lặp.
Ví dụ mã
#include <bits/stdc++.h>
using namespace std;
int trailing_zeroes(int num) {
int count = 0;
bitset<64> arr;
arr |= num;
for (int i = 0; i < 64; i++) {
if (arr[i] == 0) {
count++;
} else {
break;
}
}
return count;
}
int main() {
int num = 6;
cout << "Số 0 đuôi trong biểu diễn nhị phân dùng Bitset là: " << trailing_zeroes(num);
return 0;
}
Đầu ra
Nếu chạy mã trên, sẽ tạo ra đầu ra sau:
Số 0 đuôi trong biểu diễn nhị phân dùng Bitset là: 1