问题描述
有无穷多个正整数按照下图方式排列在坐标系中。
21 22 23 24 25 26
20 7 8 9 10 ...
19 6 1 2 11 ...
18 5 4 3 12 ...
17 16 15 14 13 ...
规定数字1的坐标是(0,0)。行的编号从上往下依次增大,列的编号从左往右依次增大。比如24的坐标是(-2,1)。
现在给定一个数字N,请求出它的坐标(在第几行第几列)。
输入格式
输入一共有若干行,每行一个数字N(1 ≤ N<231),直到文件结束。
输出格式
对应每组数据有一行输出,对应数字N的坐标(行,列)。
输入样例
2
7
输出样例
(0,1)
(-1,-1)
代码
import math
while True:
N=int(input())
n=int(math.sqrt(N))
if N!=1:
if n%2==0:
a=n-1
b=n+1
elif n%2==1:
a=n
b=n+2
if n==math.sqrt(N) and n!=1:
a=n-2
b=n
A=a//2
B=b//2
Error=N-a*a-1
Bian=(b*b-a*a)/4
c=Error%Bian
d=Error//Bian
if d==0:
x=-A+c
y=B
elif d==1:
x=B
y=A-c
elif d==2:
x=A-c
y=-B
elif d==3:
x=-B
y=-A+c
else:
x=0
y=0
x=int(x)
y=int(y)
print("(%s,%s)"%(x,y))