对角线上的数字满足 an = n * (n - 1) + 1;
再通过列或者行的奇偶性以及与对角线数字的关系得到坐标。
代码如下:
1 #include2 #include 3 4 using namespace std; 5 6 int main() 7 { 8 int n; 9 while(cin >> n, n)10 {11 int c=(int)ceil(sqrt(n));12 int a=c*(c-1)+1;13 if (c & 1)14 {15 if (n>=a)16 cout << (c-(n-a)) << " " << c << endl;17 else18 cout << c << " " << c-(a-n) << endl;19 }20 else21 {22 if (n>=a)23 cout << c << " " << (c-(n-a)) << endl;24 else25 cout << (c-(a-n)) << " " << c << endl;26 }27 }28 return 0;29 }