题目
分析
- 按路线把这个表格铺开~
[1]
(1, 1)
2 [3] 4
(1, 2) (2, 2) (2, 1)
9 8 [7] 6 5
(1, 3) (2, 3) (3, 3) (3, 2) (3, 1)
10 11 12 [13] 14 15 16
(1, 4) (2, 4) (3, 4) (4, 4) (4, 3) (4, 2) (4, 1)
……
思路
- 取对角线的值;
- 取当前行的方向;
代码
#include <stdio.h>
#include <math.h>
int main(void)
{
long long m, n;
while (scanf("%lld", &m), m) {
n = ceil(sqrt(m));
if (n*n - m+1 < m - (n-1)*(n-1))
if (n & 1)
printf("%lld %lld\n", n*n - m+1, n);
else
printf("%lld %lld\n", n, n*n - m+1);
else
if (n & 1)
printf("%lld %lld\n", n, m - (n-1)*(n-1));
else
printf("%lld %lld\n", m - (n-1)*(n-1), n);
}
return 0;
}