您的位置:首页 > 其它

UVa 10161 - Ant on a Chessboard

2013-04-22 18:07 405 查看
#include <cstdio>
#include <cmath>
#include <iostream>

using namespace std;
int main ()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif

int num;
while(scanf("%d", &num) == 1 &&
num != 0) {
int n = floor(sqrt(num-0.5)); //找规律,第一层:1;第二层:2,3,4;第三层:9,8,7,6,5; ...
//cout << n << endl;
int x, y;
int m = num - n*n; //n*n 为前n项个数,1+3+5+...+n=n*n
if(m <= n+1) {
x = m;
y = n+1;
} else {
x = n+1;
y = 2*n+2-m;
}
if(n%2==0) {int temp=x; x=y; y=temp;} //奇、偶数x,y对称
printf("%d %d\n", x, y);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: