You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1383 lines
37 KiB
1383 lines
37 KiB
const int SHIFT_TABLE[16] = {1, 2, 4, 8, 16, 32, 64, 128,
|
|
256, 512, 1024, 2048, 4096, 8192, 16384, 32768};
|
|
|
|
int long_func() {
|
|
int ans, i, x, y, cur;
|
|
{
|
|
int pl = 2, pr = 0, pres = 1;
|
|
while (pr > 0) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = pr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int ml = pres, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pres = ans;
|
|
}
|
|
{
|
|
int ml = pl, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pl = ans;
|
|
x = pr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
pr = ans;
|
|
}
|
|
ans = pres;
|
|
}
|
|
putint(ans);
|
|
putch(10);
|
|
{
|
|
int pl = 2, pr = 1, pres = 1;
|
|
while (pr > 0) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = pr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int ml = pres, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pres = ans;
|
|
}
|
|
{
|
|
int ml = pl, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pl = ans;
|
|
x = pr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
pr = ans;
|
|
}
|
|
ans = pres;
|
|
}
|
|
putint(ans);
|
|
putch(10);
|
|
cur = 2;
|
|
while (cur < 16) {
|
|
{
|
|
int pl = 2, pr = cur, pres = 1;
|
|
while (pr > 0) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = pr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int ml = pres, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pres = ans;
|
|
}
|
|
{
|
|
int ml = pl, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pl = ans;
|
|
x = pr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
pr = ans;
|
|
}
|
|
ans = pres;
|
|
}
|
|
putint(ans);
|
|
putch(10);
|
|
cur = cur + 1;
|
|
}
|
|
cur = 0;
|
|
while (cur < 16) {
|
|
{
|
|
int pl = 2, pr = cur, pres = 1;
|
|
while (pr > 0) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = pr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int ml = pres, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pres = ans;
|
|
}
|
|
{
|
|
int ml = pl, mr = pl, mres = 0;
|
|
while (mr) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = mr;
|
|
y = 1;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
if (ans) {
|
|
{
|
|
int al = mres, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
mres = ans;
|
|
}
|
|
{
|
|
int al = ml, c = ml, sum;
|
|
while (c) {
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2) {
|
|
if (y % 2 == 0) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
} else if (y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
sum = ans;
|
|
ans = 0;
|
|
i = 0;
|
|
x = al;
|
|
y = c;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
c = ans;
|
|
if ((1) > 15) {
|
|
ans = 0;
|
|
} else {
|
|
ans = 0;
|
|
i = 0;
|
|
x = (c)*SHIFT_TABLE[1];
|
|
y = 0xffff;
|
|
while (i < 16) {
|
|
if (x % 2 && y % 2) {
|
|
ans = ans + 1 * SHIFT_TABLE[i];
|
|
}
|
|
x = x / 2;
|
|
y = y / 2;
|
|
i = i + 1;
|
|
}
|
|
}
|
|
c = ans;
|
|
al = sum;
|
|
}
|
|
ans = al;
|
|
}
|
|
ml = ans;
|
|
x = mr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
mr = ans;
|
|
}
|
|
ans = mres;
|
|
}
|
|
pl = ans;
|
|
x = pr;
|
|
y = 1;
|
|
if (y >= 15) {
|
|
if (x < 0) {
|
|
ans = 0xffff;
|
|
} else {
|
|
ans = 0;
|
|
}
|
|
} else if (y > 0) {
|
|
if (x > 0x7fff) {
|
|
x = x / SHIFT_TABLE[y];
|
|
ans = x + 65536 - SHIFT_TABLE[15 - y + 1];
|
|
} else {
|
|
ans = x / SHIFT_TABLE[y];
|
|
}
|
|
} else {
|
|
ans = x;
|
|
}
|
|
pr = ans;
|
|
}
|
|
ans = pres;
|
|
}
|
|
if (SHIFT_TABLE[cur] != ans) return 1;
|
|
cur = cur + 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int main() {
|
|
return long_func();
|
|
}
|