// Problem#: 1694
// Submission#: 1662655
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
//1694
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int t;
cin >> t;
int n,m;
while (t--)
{
scanf ("%d%d",&n,&m);
int counter = 0;
int i;
for (i = 1; i*i <= m ;i+=2)
counter++;
i -= 2;
int x,y;
int num = i * i;
//不大于m的最大右上角的数num,x,y为其坐标
x = (n - i) / 2 + 1;
y = n + 1 - x;
int dis = m - num;
if (dis == 0)
;
else if (dis > 0 && dis <= counter * 2)
{
x = x + dis - 1;
y = y + 1;
}
else if (dis > counter * 2 && dis <= counter * 4)
{
int tempx = x + counter * 2 - 1;
y = y - (dis - (tempx - x + 2));
x = tempx;
}
else if (dis > counter * 4 && dis <= counter * 6)
{
y = y - (counter * 2 - 1);
x = x + counter * 6 - dis - 1;
}
else if (dis > counter * 6 && dis < counter * 8)
{
x --;
y = y + 1 - ((i + 2) * (i + 2) - m);
}
printf ("%d %d\n", x ,y);
}
return 0;
}
sicily 1694 Spiral
最新推荐文章于 2017-12-20 22:06:30 发布