题目大意:一只蚂蚁在棋盘上以一定的规则爬行,求出一定时间过后蚂蚁的位置。
解题思路:如图,时间与位置的关系。先算出完整的平方部分到哪里,剩下的时间分为对角线之前和对角线之后分别修改 x , y 值
#include<cstdio>
int main() {
int t ;
while( scanf("%d",&t) , t ) {
int x = 1, y = 1 , squ = 1, la;
if( t == 1 ) { printf("1 1\n"); continue;}
for(int i = 1; i*i <= t ; i++ )
squ = i;
t = t - squ*squ;
if( squ % 2 )
y = squ;
else x = squ;
if( !t ) { printf("%d %d\n", x , y ); continue; }
if( t <= squ + 1 ) {
if( x == 1) {
y += 1;
x = t;
}
else if( y == 1 ) {
x += 1;
y = t;
}
}
else {
if( y == 1 ) {
y += squ;
x -= t - ( squ + 1 ) - 1 ;
}
else if( x == 1) {
x += squ;
y -= t - ( squ + 1 ) - 1;
}
}
printf("%d %d\n", x , y );
}
return 0;
}