hdu1391Number Steps


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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值