x,y的范围是 0到5000.。。。
第一次的代码:用时15MS
#include <cstdio>
struct point{
int x,y;
}a[10005];
int main()
{
a[0].x = 0;
a[0].y = 0;
a[1].x = 1;
a[1].y = 1;
int cnt = 2;
for(int i = 4;;)
{
a[i].x = cnt;
a[i].y = cnt;
if(i % 2 == 0)
++i;
else
i += 3;
++cnt;
if(cnt > 5000)
break;
}
int tx = 2;
int ty = 0;
for(int i = 2;;)
{
a[i].x = tx;
a[i].y = ty;
if(i % 2 == 0)
++i;
else
i += 3;
tx++;
ty++;
if(tx > 5000)
break;
}
int _;
while(~scanf("%d",&_)){
while(_--)
{
int x,y;
scanf("%d%d",&x,&y);
int flag = -1;
for(int i = 0;i <= 10000;++i)
if(a[i].x == x && a[i].y == y)
{
flag = i;
break;
}
if(flag != -1)
printf("%d\n",flag);
else
printf("No Number\n");
}
}
return 0;
}
第二次的代码:用时0MS
这题就是找规律的。。。
代码:
#include <cstdio>
int main()
{
int _;
scanf("%d",&_);
while(_--)
{
int x,y;
scanf("%d%d",&x,&y);
if(!x && !y)
printf("0\n");
else if(x != y && x != y + 2)
printf("No Number\n");
else if(x % 2)
printf("%d\n",x + y - 1);
else
printf("%d\n",x + y);
}
return 0;
}