确定一个数在一个平面中的位置
题为:形如下表:
[font=Times New Roman] | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
0 | 0 | 2 | 5 | 9 | 14 | 20 | |
1 | 1 | 4 | 8 | 13 | 19 | | |
2 | 3 | 7 | 12 | 18 | | | |
3 | 6 | 11 | 17 | | | | |
4 | 10 | 16 | | | | | |
5 | 15 | | | | | | |
6 | | | | | | | |
数从左下往右上依次加一,一直加下去,边上的数字为坐标,竖为纵坐标,横为横坐标,如15在表中(0,5),12在(2,2)。问:给一个数,写个算法和程序得到它在表中的坐标?
我的想法是,用一个一维数组存下第一列的数,再你待找数去与这数组中的数比较,找出与待找数最近的两个数做差,与较小的数的差即为横坐标,与另一个数的差再减个一就是纵坐标了,但不知怎么写出源码了,因为一直相加,数太大,我定义的是长整型,但却老是溢出,不知怎么处理了。
求一个高效的算法和源码,并帮解决数据溢出的问题。