记录编号 |
98555 |
评测结果 |
AAAAAAAAAA |
题目名称 |
螺旋方阵 |
最终得分 |
100 |
用户昵称 |
Dijkstra |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.013 s |
提交时间 |
2014-04-23 19:13:33 |
内存使用 |
0.56 MiB |
显示代码纯文本
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("spiral.in");
ofstream fout("spiral.out");
int N;
struct spiral
{
int start;
int end;
}F[32769];
void ANS(int a,int b)
{
int n,x,y,i,j,f=0;
for(i=1;;i+=2)if(b>=F[i].start&&b<=F[i].end){n=i;break;}
x=a-(a-n)/2;
y=1+(a-n)/2;
j=1;
f=0;
for(i=F[n].end;i>=F[n].start;i--)
{
if(i==b){fout<<y<<" "<<x<<endl;return;}
if(j==n){f++;f%=4;j=1;}
if(f==0){x--;j++;}
if(f==1){y++;j++;}
if(f==2){x++;j++;}
if(f==3){y--;j++;}
}
}
int main()
{
fin>>N;
int i,a,b;
F[1].start=F[1].end=1;
for(i=3;i<=32767;i+=2)
{
F[i].start=(i-2)*(i-2)+1;
F[i].end=i*i;
}
for(i=1;i<=N;i++)
{
fin>>a>>b;
ANS(a,b);
}
return 0;
}