# -------- Muhammad Yalqa R.A. - Suitmedia Backend Test --------
# -------- DEKLARASI FUNCTION --------
def hitungNomorBit(angka, nomorBit):
biner = []
temp = angka
while temp > 0:
biner.insert(0, temp % 2)
temp = temp // 2
hasil = []
grup = []
for bit in biner:
if bit == 1:
grup.append(bit)
else:
if grup:
hasil.append(grup)
grup = []
if grup:
hasil.append(grup)
hasil = hasil[::-1]
if nomorBit < len(hasil):
grup_terpilih = hasil[nomorBit]
return int("".join(str(b) for b in grup_terpilih), 2)
else:
return None
# -------- PROGRAM UTAMA --------
if __name__ == "__main__":
print("Contoh otomatis hitungNomorBit(13, x):")
print("hitungNomorBit(13, 0) =", hitungNomorBit(13, 0)) # Output: 1
print("hitungNomorBit(13, 1) =", hitungNomorBit(13, 1)) # Output: 3
print("hitungNomorBit(13, 2) =", hitungNomorBit(13, 2)) # Output: None
print("")
try:
angka = int(input())
nomorBit = int(input())
hasil = hitungNomorBit(angka, nomorBit)
if hasil is not None:
print(f"Hasil hitungNomorBit({angka}, {nomorBit}) adalah: {hasil}")
else:
print(f"Hasil hitungNomorBit({angka}, {nomorBit}) adalah: null")
except ValueError:
print("Input tidak valid. Harap masukkan angka bulat.")
IyAtLS0tLS0tLSBNdWhhbW1hZCBZYWxxYSBSLkEuIC0gU3VpdG1lZGlhIEJhY2tlbmQgVGVzdCAtLS0tLS0tLQoKIyAtLS0tLS0tLSBERUtMQVJBU0kgRlVOQ1RJT04gLS0tLS0tLS0KZGVmIGhpdHVuZ05vbW9yQml0KGFuZ2thLCBub21vckJpdCk6CiAgICBiaW5lciA9IFtdCiAgICB0ZW1wID0gYW5na2EKICAgIHdoaWxlIHRlbXAgPiAwOgogICAgICAgIGJpbmVyLmluc2VydCgwLCB0ZW1wICUgMikKICAgICAgICB0ZW1wID0gdGVtcCAvLyAyCgogICAgaGFzaWwgPSBbXQogICAgZ3J1cCA9IFtdCiAgICBmb3IgYml0IGluIGJpbmVyOgogICAgICAgIGlmIGJpdCA9PSAxOgogICAgICAgICAgICBncnVwLmFwcGVuZChiaXQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgZ3J1cDoKICAgICAgICAgICAgICAgIGhhc2lsLmFwcGVuZChncnVwKQogICAgICAgICAgICAgICAgZ3J1cCA9IFtdCiAgICBpZiBncnVwOgogICAgICAgIGhhc2lsLmFwcGVuZChncnVwKQoKICAgIGhhc2lsID0gaGFzaWxbOjotMV0KCiAgICBpZiBub21vckJpdCA8IGxlbihoYXNpbCk6CiAgICAgICAgZ3J1cF90ZXJwaWxpaCA9IGhhc2lsW25vbW9yQml0XQogICAgICAgIHJldHVybiBpbnQoIiIuam9pbihzdHIoYikgZm9yIGIgaW4gZ3J1cF90ZXJwaWxpaCksIDIpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCgoKIyAtLS0tLS0tLSBQUk9HUkFNIFVUQU1BIC0tLS0tLS0tCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBwcmludCgiQ29udG9oIG90b21hdGlzIGhpdHVuZ05vbW9yQml0KDEzLCB4KToiKQogICAgcHJpbnQoImhpdHVuZ05vbW9yQml0KDEzLCAwKSA9IiwgaGl0dW5nTm9tb3JCaXQoMTMsIDApKSAgIyBPdXRwdXQ6IDEKICAgIHByaW50KCJoaXR1bmdOb21vckJpdCgxMywgMSkgPSIsIGhpdHVuZ05vbW9yQml0KDEzLCAxKSkgICMgT3V0cHV0OiAzCiAgICBwcmludCgiaGl0dW5nTm9tb3JCaXQoMTMsIDIpID0iLCBoaXR1bmdOb21vckJpdCgxMywgMikpICAjIE91dHB1dDogTm9uZQogICAgcHJpbnQoIiIpCgogICAgdHJ5OgogICAgICAgIGFuZ2thID0gaW50KGlucHV0KCkpCiAgICAgICAgbm9tb3JCaXQgPSBpbnQoaW5wdXQoKSkKCiAgICAgICAgaGFzaWwgPSBoaXR1bmdOb21vckJpdChhbmdrYSwgbm9tb3JCaXQpCiAgICAgICAgaWYgaGFzaWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHByaW50KGYiSGFzaWwgaGl0dW5nTm9tb3JCaXQoe2FuZ2thfSwge25vbW9yQml0fSkgYWRhbGFoOiB7aGFzaWx9IikKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludChmIkhhc2lsIGhpdHVuZ05vbW9yQml0KHthbmdrYX0sIHtub21vckJpdH0pIGFkYWxhaDogbnVsbCIpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICBwcmludCgiSW5wdXQgdGlkYWsgdmFsaWQuIEhhcmFwIG1hc3Vra2FuIGFuZ2thIGJ1bGF0LiIp