import java.util.Arrays;
class Ideone {
public static final int[] gaps(int n) {
// The number of gaps is the number of one bits minus one.
final int[] result
= new int[Math.
max(0,
Integer.
bitCount(n
) - 1)];
// Remove the last one bit and all bits after to get to first gap.
n
>>>= Integer.
numberOfTrailingZeros(n
) + 1;
for (int i = result.length - 1; i >= 0; i--) {
final int gapSize
= Integer.
numberOfTrailingZeros(n
); result[i] = gapSize;
// Remove the last one bit and all bits after to get to next gap.
n >>>= gapSize + 1;
}
return result;
}
// Driver program
public static void main
(final String[] args
) { final int n = 1041;
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CgpjbGFzcyBJZGVvbmUgewogICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnRbXSBnYXBzKGludCBuKSB7CiAgICAJLy8gVGhlIG51bWJlciBvZiBnYXBzIGlzIHRoZSBudW1iZXIgb2Ygb25lIGJpdHMgbWludXMgb25lLgogICAgICAgIGZpbmFsIGludFtdIHJlc3VsdCA9IG5ldyBpbnRbTWF0aC5tYXgoMCwgSW50ZWdlci5iaXRDb3VudChuKSAtIDEpXTsKICAgICAgICAKICAgICAgICAvLyBSZW1vdmUgdGhlIGxhc3Qgb25lIGJpdCBhbmQgYWxsIGJpdHMgYWZ0ZXIgdG8gZ2V0IHRvIGZpcnN0IGdhcC4KICAgICAgICBuID4+Pj0gSW50ZWdlci5udW1iZXJPZlRyYWlsaW5nWmVyb3MobikgKyAxOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSByZXN1bHQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAJZmluYWwgaW50IGdhcFNpemUgPSBJbnRlZ2VyLm51bWJlck9mVHJhaWxpbmdaZXJvcyhuKTsKICAgICAgICAgICAgcmVzdWx0W2ldID0gZ2FwU2l6ZTsKICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBsYXN0IG9uZSBiaXQgYW5kIGFsbCBiaXRzIGFmdGVyIHRvIGdldCB0byBuZXh0IGdhcC4KICAgICAgICAgICAgbiA+Pj49IGdhcFNpemUgKyAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KIAogICAgLy8gRHJpdmVyIHByb2dyYW0gCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgZmluYWwgaW50IG4gPSAxMDQxOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihJbnRlZ2VyLnRvQmluYXJ5U3RyaW5nKG4pKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQXJyYXlzLnRvU3RyaW5nKGdhcHMobikpKTsKICAgIH0KfQ==