#include <iostream>
using namespace std;
int hitungNomorBit(int angka, int nomorBit) {
// Validasi input nomorBit harus 0 atau 1
if (nomorBit != 0 && nomorBit != 1) {
return -1; // sebagai pengganti NULL
}
// Konversi angka desimal ke biner manual
int biner[32]; // cukup untuk 32 bit
int i = 0;
while (angka > 0) {
biner[i] = angka % 2;
angka /= 2;
i++;
}
// Hitung jumlah kemunculan nomorBit
int jumlah = 0;
for (int j = 0; j < i; j++) {
if (biner[j] == nomorBit) {
jumlah++;
}
}
// Jika tidak ditemukan, anggap null -> return -1
if (jumlah == 0) {
return -1;
}
return jumlah;
}
int main() {
cout << "hitungNomorBit(13, 0) = " << hitungNomorBit(13, 0) << endl; // 1
cout << "hitungNomorBit(13, 1) = " << hitungNomorBit(13, 1) << endl; // 3
cout << "hitungNomorBit(13, 2) = " << hitungNomorBit(13, 2) << endl; // -1 (NULL)
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGhpdHVuZ05vbW9yQml0KGludCBhbmdrYSwgaW50IG5vbW9yQml0KSB7CiAgICAvLyBWYWxpZGFzaSBpbnB1dCBub21vckJpdCBoYXJ1cyAwIGF0YXUgMQogICAgaWYgKG5vbW9yQml0ICE9IDAgJiYgbm9tb3JCaXQgIT0gMSkgewogICAgICAgIHJldHVybiAtMTsgLy8gc2ViYWdhaSBwZW5nZ2FudGkgTlVMTAogICAgfQoKICAgIC8vIEtvbnZlcnNpIGFuZ2thIGRlc2ltYWwga2UgYmluZXIgbWFudWFsCiAgICBpbnQgYmluZXJbMzJdOyAvLyBjdWt1cCB1bnR1ayAzMiBiaXQKICAgIGludCBpID0gMDsKICAgIHdoaWxlIChhbmdrYSA+IDApIHsKICAgICAgICBiaW5lcltpXSA9IGFuZ2thICUgMjsKICAgICAgICBhbmdrYSAvPSAyOwogICAgICAgIGkrKzsKICAgIH0KCiAgICAvLyBIaXR1bmcganVtbGFoIGtlbXVuY3VsYW4gbm9tb3JCaXQKICAgIGludCBqdW1sYWggPSAwOwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBpOyBqKyspIHsKICAgICAgICBpZiAoYmluZXJbal0gPT0gbm9tb3JCaXQpIHsKICAgICAgICAgICAganVtbGFoKys7CiAgICAgICAgfQogICAgfQoKICAgIC8vIEppa2EgdGlkYWsgZGl0ZW11a2FuLCBhbmdnYXAgbnVsbCAtPiByZXR1cm4gLTEKICAgIGlmIChqdW1sYWggPT0gMCkgewogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICByZXR1cm4ganVtbGFoOwp9CgppbnQgbWFpbigpIHsKICAgIGNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEzLCAwKSA9ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDApIDw8IGVuZGw7IC8vIDEKICAgIGNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEzLCAxKSA9ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDEpIDw8IGVuZGw7IC8vIDMKICAgIGNvdXQgPDwgImhpdHVuZ05vbW9yQml0KDEzLCAyKSA9ICIgPDwgaGl0dW5nTm9tb3JCaXQoMTMsIDIpIDw8IGVuZGw7IC8vIC0xIChOVUxMKQogICAgcmV0dXJuIDA7Cn0K