#include <stdio.h>
long long NumberOfA(long long x)
{
long long t = x <<1;
while(t^(t&-t)) t ^= (t&-t);
return t-++x;
}
unsigned long long NA2(long long x)
{
unsigned long long y = ((((unsigned long long)x)-1)+1) >> 1;
return y;
}
int main(void) {
long long x = 10000000000;
printf("X:%lld => N(a):%lld; N2(a):%llu\n", 10LL
, NumberOfA
(10LL
), NA2
(10LL
)); printf("X:%lld => N(a):%lld; N2(a)%llu\n", x
, NumberOfA
(x
), NA2
(x
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgogICAgbG9uZyBsb25nICBOdW1iZXJPZkEobG9uZyBsb25nICB4KQogICAgewogICAgCWxvbmcgbG9uZyB0ID0geCA8PDE7CiAgICAJd2hpbGUodF4odCYtdCkpIHQgXj0gKHQmLXQpOwogICAgICAgIHJldHVybiB0LSsreDsKICAgIH0KICAgIAogICAgdW5zaWduZWQgbG9uZyBsb25nIE5BMihsb25nIGxvbmcgeCkKICAgIHsKICAgIAl1bnNpZ25lZCBsb25nIGxvbmcgeSA9ICgoKCh1bnNpZ25lZCBsb25nIGxvbmcpeCktMSkrMSkgPj4gMTsKICAgIAlyZXR1cm4geTsKICAgIH0KCgoKaW50IG1haW4odm9pZCkgewoJCglsb25nIGxvbmcgIHggPSAxMDAwMDAwMDAwMDsKCQoJcHJpbnRmKCJYOiVsbGQgPT4gTihhKTolbGxkOyBOMihhKTolbGx1XG4iLCAxMExMLCBOdW1iZXJPZkEoMTBMTCksIE5BMigxMExMKSk7CglwcmludGYoIlg6JWxsZCA9PiBOKGEpOiVsbGQ7IE4yKGEpJWxsdVxuIiwgeCwgTnVtYmVyT2ZBKHgpLCBOQTIoeCkpOwoJCglyZXR1cm4gMDsKfQo=