回到学校,一切显得自由多了,今天看到一道题,“坐标与数字”,通过率接近80%,在此分享一下自己的拙作...
如题:
如图所示,我们从0开始把整数写在两条直线上,0, 1, 2, 3分别写在(0,0), (1,1), (2,0)和(3, 1)这4点上,如图规律继续写下去。 现在给定坐标(x,y),问(x,y)位置的整数是多少,如果这个位置不存在整数,输入-1。其中, 0<=x,y<=1100。
从通过率来说,这道题已经是目前为止最简单了;
直接看图,两条角度为45度的直线;
1.其中通过(0, 0)点的直线坐标都是x == y的,另外一条直线则是x == y + 2;即向又平移了两位;
2.在同一水平,右侧的数字比左侧的数字大2
3.左侧的直线数字的规律是0,1 , 4 , 5...即每两个数字是相邻的,每隔两个数字相差2;
根据上述3个点写出如下:
#include<stdio.h> int position (int x,int y) { if(x == y) { x = y % 2; //余数 y = y / 2; //个数 y = 4 * y + x; return y; } else if(x == y + 2) { x = y % 2; //余数 y = y / 2; //个数 y = 4 * y + x + 2; return y; } else return -1; } //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 int main() { printf("%d",position(7,5)); } //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
o(∩_∩)o
原文:http://blog.csdn.net/xjm199/article/details/19829541