1610 - Number Steps
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>
Input
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.
Output
For each point in the input, write the number written at that point or write No Number if there is none.
Examples
Input
3 1 1 14 12 62 63
Output
1 26 No Number
Solution 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; }
Solution 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"); } } } }