UVA-10161 Ant on a Chessboard
题目大意:蚂蚁绕圈走,一秒走一格,给出时间,判断蚂蚁走到那个位置
Sample Input
8
20
25
0
Sample Output
2 3
5 4
1 5
解题思路:先求出蚂蚁所在的是第几圈,再判断走到了哪个位置
///UVA-10161 Ant on a Chessboard
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main() {
int x = 0, y = 0;
int m;
while (scanf("%d",&m) && m != 0) {
getchar();
int n = floor(sqrt(m - 1)); // floor 向下取整
int j = m - 1 - n * n;
int k = n * n + n + 1;
if (n % 2 == 0) {
if (m <= k) {
x = n + 1;
y = m - n * n;
}
else {
y = n + 1;
x = n - (m - k) +1;
}
}
else {
if (m <= k) {
y = n + 1;
x = m - n * n;
}
else {
x = n + 1;
y = n - (m - k) + 1;
}
}
printf("%d %d\n",x ,y);
}
return 0;
}