题目:10161 - Ant on a Chessboard
题目大意:求出蚂蚁经过t秒后的位置。
解题思路:发现位置的规律,第i行,第i列的相交夹的数可以确定, ((i - 1)^2 + 1 + i ^2) / 2。
#include<stdio.h>
#include<math.h>
int main() {
int t, x, y, i;
while(scanf("%d", &t) ==1 && t) {
if(t == 1)
x = y = 1;
for( i = 1; i < t; i++) {
if(t <= pow(i, 2))
break;
}
x = i;
y = i;
int mid = (pow(i - 1, 2) + 1 + pow(i, 2)) / 2;
if(i % 2 == 0) {
if(t > mid)
y -= (t - mid);
else if(t < mid)
x -= (mid - t);
}
else {
if(t > mid)
x -= (t - mid);
else if(t < mid)
y -= (mid - t);
}
printf("%d %d\n", x, y );
}
return 0;
}