Loading Now

[Cpp-STL] Bitset- countOperations

bitset

Bài tập.

Các nhà khoa học đang nghiêm cứu một loại vius, loại virus này có đặc điểm là sẽ tự động nhân đôi số lượng mỗi ngày. Các nhà khoa học muốn có n (1 ≤ n ≤ 109) con virus như trên nên họ đã tiến hành như sau: Họ lấy một chiệc hộp sạch (Không có con virus nào), mỗi ngày họ chỉ được thả nhiều nhất 1 con virus vào hộp. Các nhà khoa học muốn biết mình phải thả bao nhiêu con virus để có được đúng số lượng virus n.

Ví dụ:

  • Với n = 2, thì countOperations(n) = 1.
    Giải thích:
    Họ sẽ thả một con virus vào hộp và đợi đến ngày hôm sau là có được đúng 2 con virus.

  • Với n = 5, thì countOperations(n) = 2.
    Giải thích:
    Họ sẽ thả một con virus vào hộp và đợi đến 2 ngày sau là có được 4 con virus, sau đó thả và 1 con nữa là có được đúng 5 con virus.

 

Hướng dẫn.

Số lượng virus mà các nhà khoa học cần thêm và chính là số lượng bit 1 trong chuỗi nhị phân của n.

Sử dụng hàm count() để lấy số lượng bit 1 trong bitset.

Code mẫu:

int countOperations(int n)
{
    bitset<32> foo(n);
    return foo.count();
}

Post Comment

Contact