很简单的找规律的题目,原本我上交的代码WA了,原因是没考虑到 mid=(high+low)/2; 有缺陷,
后来改成 mid=low + (high-low)/2; 就AC了
/* uva: 10161 PROB: Problem A.Ant on a Chessboard */ #include<stdio.h> #define MAXN 10005 #define LOCAL int main() { #ifdef LOCAL freopen("10161.in.txt", "r", stdin); #endif // LOCAL int n; int i, count, low, high, mid, x, y; while( scanf("%d", &n) && n ) { for(i=1; ; i++) if(i*i>=n) break; high=i*i; low=(i-1)*(i-1)+1; mid=low + (high-low)/2; if(i%2) { x=i; y=1; count=low; while(count<n) { if(count<mid) { y++; count++; } else { x--; count++; } } } else { x=i; y=1; count=high; while(count>n) { if(count>mid) { y++; count--; } else { x--; count--; } } } printf("%d %d\n", x, y); } return 0; }