大概就是这么一道题,据题解,这道题是贪心,因为数据太大,无法用暴力搜索。
所以,比较渣的我写了个半残版,只能计算比较小的范围的数。
下代码。
#include <stdio.h>
#include <cstring>
int yhys(int a, int b)
{
int x[1000], y[1000], i = 0, j = 0;
memset(x, 0, sizeof(x));
memset(y, 0, sizeof(y));
while(a!=0)
{
x[i] = a%2;
a/=2;
i++;
}
while(b != 0)
{
y[j] = b%2;
b /= 2;
j++;
}
int k = i>j?i:j;
int m, n, p = 1, q = 0;
for( m = 0; m < k; m++)
{
p = 1;
if(x[m]!=y[m])
{
for( n = 0; n < m; n++)
{
p = p*2;
}
q += p;
}
}
return q;
}
int main()
{
int t;
scanf("%d", &t);
while(t--)
{
int a, b, c, d, m = 0;
scanf("%d %d %d %d", &a, &b, &c, &d);
int h[200];
int i, j, k = 0;
for(i = a; i <=b; i++)
for(j = c; j <=d; j++)
{
h[k]=yhys(i, j);
k++;
}
for(i = 0; i < k; i++)
{
m = h[i]>m?h[i]:m;
}
printf("%d", m);
}
return 0;
}