#include <iostream>
#include <string>
#include <algorithm> // Untuk std::reverse
// Fungsi untuk mengonversi bilangan desimal ke representasi biner string
std::string desimalKeBiner(int angka) {
if (angka == 0) {
return "0";
}
std::string binerString = "";
while (angka > 0) {
binerString += (angka % 2 == 0 ? '0' : '1');
angka /= 2;
}
std::reverse(binerString.begin(), binerString.end()); // Balikkan string
return binerString;
}
// Fungsi untuk menghitung jumlah nomor bit tertentu dalam bilangan biner
int hitungNomorBit(int angka, int nomorBit) {
if (nomorBit != 0 && nomorBit != 1) {
// Mengembalikan 0 untuk kasus "null" seperti contoh, karena fungsi mengembalikan int
// Dalam C++, tidak ada "null" untuk tipe int.
// Jika perlu membedakan, bisa menggunakan std::optional<int> atau mengembalikan nilai khusus seperti -1.
return 0;
}
std::string binerRepresentasi = desimalKeBiner(angka);
int jumlah = 0;
char bitYangDicari = (nomorBit == 0 ? '0' : '1');
for (char bit : binerRepresentasi) {
if (bit == bitYangDicari) {
jumlah++;
}
}
return jumlah;
}
int main() {
// Contoh dari soal
// Representasi bilangan biner dari angka 13 adalah 1101
std::cout << "hitungNomorBit(13, 0) -> " << hitungNomorBit(13, 0) << std::endl; // Diharapkan 1
std::cout << "hitungNomorBit(13, 1) -> " << hitungNomorBit(13, 1) << std::endl; // Diharapkan 3
std::cout << "hitungNomorBit(13, 2) -> " << hitungNomorBit(13, 2) << std::endl; // Diharapkan 0 (null)
// Contoh tambahan
std::cout << "hitungNomorBit(7, 1) -> " << hitungNomorBit(7, 1) << std::endl; // 7 dalam biner adalah 111, diharapkan 3
std::cout << "hitungNomorBit(10, 0) -> " << hitungNomorBit(10, 0) << std::endl; // 10 dalam biner adalah 1010, diharapkan 2
std::cout << "hitungNomorBit(0, 0) -> " << hitungNomorBit(0, 0) << std::endl; // 0 dalam biner adalah 0, diharapkan 1
std::cout << "hitungNomorBit(0, 1) -> " << hitungNomorBit(0, 1) << std::endl; // 0 dalam biner adalah 0, diharapkan 0
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBVbnR1ayBzdGQ6OnJldmVyc2UKCi8vIEZ1bmdzaSB1bnR1ayBtZW5nb252ZXJzaSBiaWxhbmdhbiBkZXNpbWFsIGtlIHJlcHJlc2VudGFzaSBiaW5lciBzdHJpbmcKc3RkOjpzdHJpbmcgZGVzaW1hbEtlQmluZXIoaW50IGFuZ2thKSB7CiAgICBpZiAoYW5na2EgPT0gMCkgewogICAgICAgIHJldHVybiAiMCI7CiAgICB9CiAgICBzdGQ6OnN0cmluZyBiaW5lclN0cmluZyA9ICIiOwogICAgd2hpbGUgKGFuZ2thID4gMCkgewogICAgICAgIGJpbmVyU3RyaW5nICs9IChhbmdrYSAlIDIgPT0gMCA/ICcwJyA6ICcxJyk7CiAgICAgICAgYW5na2EgLz0gMjsKICAgIH0KICAgIHN0ZDo6cmV2ZXJzZShiaW5lclN0cmluZy5iZWdpbigpLCBiaW5lclN0cmluZy5lbmQoKSk7IC8vIEJhbGlra2FuIHN0cmluZwogICAgcmV0dXJuIGJpbmVyU3RyaW5nOwp9CgovLyBGdW5nc2kgdW50dWsgbWVuZ2hpdHVuZyBqdW1sYWggbm9tb3IgYml0IHRlcnRlbnR1IGRhbGFtIGJpbGFuZ2FuIGJpbmVyCmludCBoaXR1bmdOb21vckJpdChpbnQgYW5na2EsIGludCBub21vckJpdCkgewogICAgaWYgKG5vbW9yQml0ICE9IDAgJiYgbm9tb3JCaXQgIT0gMSkgewogICAgICAgIC8vIE1lbmdlbWJhbGlrYW4gMCB1bnR1ayBrYXN1cyAibnVsbCIgc2VwZXJ0aSBjb250b2gsIGthcmVuYSBmdW5nc2kgbWVuZ2VtYmFsaWthbiBpbnQKICAgICAgICAvLyBEYWxhbSBDKyssIHRpZGFrIGFkYSAibnVsbCIgdW50dWsgdGlwZSBpbnQuCiAgICAgICAgLy8gSmlrYSBwZXJsdSBtZW1iZWRha2FuLCBiaXNhIG1lbmdndW5ha2FuIHN0ZDo6b3B0aW9uYWw8aW50PiBhdGF1IG1lbmdlbWJhbGlrYW4gbmlsYWkga2h1c3VzIHNlcGVydGkgLTEuCiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgc3RkOjpzdHJpbmcgYmluZXJSZXByZXNlbnRhc2kgPSBkZXNpbWFsS2VCaW5lcihhbmdrYSk7CiAgICBpbnQganVtbGFoID0gMDsKICAgIGNoYXIgYml0WWFuZ0RpY2FyaSA9IChub21vckJpdCA9PSAwID8gJzAnIDogJzEnKTsKCiAgICBmb3IgKGNoYXIgYml0IDogYmluZXJSZXByZXNlbnRhc2kpIHsKICAgICAgICBpZiAoYml0ID09IGJpdFlhbmdEaWNhcmkpIHsKICAgICAgICAgICAganVtbGFoKys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGp1bWxhaDsKfQoKaW50IG1haW4oKSB7CiAgICAvLyBDb250b2ggZGFyaSBzb2FsCiAgICAvLyBSZXByZXNlbnRhc2kgYmlsYW5nYW4gYmluZXIgZGFyaSBhbmdrYSAxMyBhZGFsYWggMTEwMQogICAgc3RkOjpjb3V0IDw8ICJoaXR1bmdOb21vckJpdCgxMywgMCkgLT4gIiA8PCBoaXR1bmdOb21vckJpdCgxMywgMCkgPDwgc3RkOjplbmRsOyAvLyBEaWhhcmFwa2FuIDEKICAgIHN0ZDo6Y291dCA8PCAiaGl0dW5nTm9tb3JCaXQoMTMsIDEpIC0+ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDEpIDw8IHN0ZDo6ZW5kbDsgLy8gRGloYXJhcGthbiAzCiAgICBzdGQ6OmNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEzLCAyKSAtPiAiIDw8IGhpdHVuZ05vbW9yQml0KDEzLCAyKSA8PCBzdGQ6OmVuZGw7IC8vIERpaGFyYXBrYW4gMCAobnVsbCkKCiAgICAvLyBDb250b2ggdGFtYmFoYW4KICAgIHN0ZDo6Y291dCA8PCAiaGl0dW5nTm9tb3JCaXQoNywgMSkgLT4gIiA8PCBoaXR1bmdOb21vckJpdCg3LCAxKSA8PCBzdGQ6OmVuZGw7ICAgLy8gNyBkYWxhbSBiaW5lciBhZGFsYWggMTExLCBkaWhhcmFwa2FuIDMKICAgIHN0ZDo6Y291dCA8PCAiaGl0dW5nTm9tb3JCaXQoMTAsIDApIC0+ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTAsIDApIDw8IHN0ZDo6ZW5kbDsgLy8gMTAgZGFsYW0gYmluZXIgYWRhbGFoIDEwMTAsIGRpaGFyYXBrYW4gMgogICAgc3RkOjpjb3V0IDw8ICJoaXR1bmdOb21vckJpdCgwLCAwKSAtPiAiIDw8IGhpdHVuZ05vbW9yQml0KDAsIDApIDw8IHN0ZDo6ZW5kbDsgICAvLyAwIGRhbGFtIGJpbmVyIGFkYWxhaCAwLCBkaWhhcmFwa2FuIDEKICAgIHN0ZDo6Y291dCA8PCAiaGl0dW5nTm9tb3JCaXQoMCwgMSkgLT4gIiA8PCBoaXR1bmdOb21vckJpdCgwLCAxKSA8PCBzdGQ6OmVuZGw7ICAgLy8gMCBkYWxhbSBiaW5lciBhZGFsYWggMCwgZGloYXJhcGthbiAwCgogICAgcmV0dXJuIDA7Cn0=