class Main {
public static void main
(String[] args
) { int i,j;
for (i=0,j=1; i<32; ++i,j<<=1) {
System.
out.
printf("0x%08x : 0x%02x\n",j,getByte
(j
)); }
}
public static byte getByte(int n) {
int x = n;
x |= (x >>> 1);
x |= (x >>> 2);
x |= (x >>> 4);
x |= (x >>> 8);
x |= (x >>> 16);
x -= ((x >>> 1) & 0x55555555);
x = (((x >>> 2) & 0x33333333) + (x & 0x33333333));
x = (((x >>> 4) + x) & 0x0f0f0f0f);
x += (x >>> 8);
x += (x >>> 16);
x &= 0x0000003f;
x = 32-x;
x >>>= 3;
x <<= 3;
return (byte)((n&(0xFF000000>>>x))>>>(24-x));
}
}
Y2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50IGksajsKICAgICAgICBmb3IgKGk9MCxqPTE7IGk8MzI7ICsraSxqPDw9MSkgewogICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIjB4JTA4eCA6IDB4JTAyeFxuIixqLGdldEJ5dGUoaikpOwogICAgICAgIH0KICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgYnl0ZSBnZXRCeXRlKGludCBuKSB7CiAgICAgICAgaW50IHggID0gbjsgCiAgICAgICAgeCB8PSAgICh4ID4+PiAgMSk7CiAgICAgICAgeCB8PSAgICh4ID4+PiAgMik7CiAgICAgICAgeCB8PSAgICh4ID4+PiAgNCk7CiAgICAgICAgeCB8PSAgICh4ID4+PiAgOCk7CiAgICAgICAgeCB8PSAgICh4ID4+PiAxNik7CiAgICAgICAgeCAtPSAgKCh4ID4+PiAgMSkgJiAweDU1NTU1NTU1KTsKICAgICAgICB4ICA9ICgoKHggPj4+ICAyKSAmIDB4MzMzMzMzMzMpICsgKHggJiAweDMzMzMzMzMzKSk7CiAgICAgICAgeCAgPSAoKCh4ID4+PiAgNCkgKyB4KSAmIDB4MGYwZjBmMGYpOwogICAgICAgIHggKz0gICAoeCA+Pj4gIDgpOwogICAgICAgIHggKz0gICAoeCA+Pj4gMTYpOwogICAgICAgIHggJj0gMHgwMDAwMDAzZjsKICAgICAgICB4ID0gMzIteDsKICAgICAgICB4ID4+Pj0gMzsKICAgICAgICB4ICA8PD0gMzsKICAgICAgICByZXR1cm4gKGJ5dGUpKChuJigweEZGMDAwMDAwPj4+eCkpPj4+KDI0LXgpKTsKICAgIH0KfQ==