1610 - Number Steps

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

Starting from point (0,0) on a plane, we have written all non-negative integers 0,1,2, ... as shown in the figure. For example, 1, 2, and 3 has been written at points (1,1), (2,0), and (3, 1) respectively and this pattern has continued.

<span style="font-family:宋体;font-size:10.5pt;">You are to write a program that reads the coordinates of a point (x, y), and writes the number (if any) that has been written at that point. (x, y) coordinates in the input are in the range 0...5000.</span> 

题目输入

The first line of the input is N, the number of test cases for this problem. In each of the N following lines, there is x, and y representing the coordinates (x, y) of a point.

题目输出

For each point in the input, write the number written at that point or write No Number if there is none.

输入/输出样例

输入格式

3
1 1
14 12
62 63

输出格式

1
26
No Number

C语言解答

#include<stdio.h>
int main()
{   
    int t,b,a;
    while(scanf("%d",&t)!=EOF)
	{ 
        while(t--)
		{
            scanf("%d%d",&a,&b);
			if(a==b)
			{
				if(a%2==0)
					printf("%d\n",a*2);
				if(a%2==1)
					printf("%d\n",a*2-1);
			}
			else if(a-2==b)
			{
				if(a%2==0)
					printf("%d\n",a*2-2);
				if(a%2==1)
					printf("%d\n",a*2-3);
			}
			else
				printf("No Number\n");
        }
    }
  return 0;
}

C++解答

#include <stdio.h>
#include <stdlib.h>

struct coordinate
{
        int x;
        int y;
};

int main()
{
        struct coordinate *cde;
        int i, n;

        while(scanf("%d", &n) != EOF)
        {
                //初始化结构体数组
                cde =(coordinate*) (malloc(sizeof(struct coordinate) * n));

                //接收坐标点
                for(i = 0; i < n; i ++)
                {
                        scanf("%d %d", &cde[i].x, &cde[i].y);
                }

                //判断打印输出
                for(i = 0; i < n; i ++)
                {
                        if(cde[i].x == cde[i].y)
                        {
                                printf("%d\n", 4 * (cde[i].y / 2) + cde[i].y % 2);
                        }else if(cde[i].x - 2 == cde[i].y)
                        {
                                printf("%d\n", 4 * (cde[i].y / 2) + cde[i].y % 2 + 2);
                        }else
                        {
                                printf("No Number\n");
                        }
                }
        }
}

Java解答

import java.util.*;

public class Main{
  final static Scanner jin=new Scanner(System.in);
  public static void main(String args[]){
    int N=jin.nextInt();
    while(N-->0){
      int x=jin.nextInt(),y=jin.nextInt();
      if((x==y||x==y+2)&&y>=0){
        if(x%2==0)System.out.println(x+y);
        else System.out.println(x+y-1);
      }
      else System.out.println("No Number");
    }
  }
}