#include <stdio.h>
#include <assert.h>
static int len(unsigned int u)
{
const int lb = __builtin_clz(u);
const int num_bits = 32 - lb;
const int ret = (num_bits + 7) / 8;
return ret;
}
int main(void) {
unsigned int u;
for(u
= 1U
; u
< 256U
; ++u
) assert(len
(u
) == 1); for(u
= 256U
; u
< 256U
* 256U
; ++u
) assert(len
(u
) == 2); for(u
= 256U
* 256U
; u
< 256U
* 256U
* 256U
; ++u
) assert(len
(u
) == 3); for(u
= 256U
* 256U
* 256U
; u
< 256U
* 256U
* 256U
* 256U
; ++u
) assert(len
(u
) == 4); // [...]
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxhc3NlcnQuaD4KCnN0YXRpYyBpbnQgbGVuKHVuc2lnbmVkIGludCB1KQp7Cglhc3NlcnQodSA8IDB4RkZGRkZGRkZVKTsKCWNvbnN0IGludCBsYiA9IF9fYnVpbHRpbl9jbHoodSk7Cgljb25zdCBpbnQgbnVtX2JpdHMgPSAzMiAtIGxiOwoJY29uc3QgaW50IHJldCA9ICAobnVtX2JpdHMgKyA3KSAvIDg7CglyZXR1cm4gcmV0Owp9CgppbnQgbWFpbih2b2lkKSB7Cgl1bnNpZ25lZCBpbnQgdTsKCWZvcih1ID0gMVU7IHUgPCAyNTZVOyArK3UpIGFzc2VydChsZW4odSkgPT0gMSk7Cglmb3IodSA9IDI1NlU7IHUgPCAyNTZVICogMjU2VTsgKyt1KSBhc3NlcnQobGVuKHUpID09IDIpOwoJZm9yKHUgPSAyNTZVICogMjU2VTsgdSA8IDI1NlUgKiAyNTZVICogMjU2VTsgKyt1KSBhc3NlcnQobGVuKHUpID09IDMpOwoJZm9yKHUgPSAyNTZVICogMjU2VSAqIDI1NlU7IHUgPCAyNTZVICogMjU2VSAqIDI1NlUgKiAyNTZVOyArK3UpIGFzc2VydChsZW4odSkgPT0gNCk7CgkvLyBbLi4uXQoJcmV0dXJuIDA7Cn0K