比赛 |
20140423 |
评测结果 |
AAAAAAAAAA |
题目名称 |
螺旋方阵 |
最终得分 |
100 |
用户昵称 |
Dijkstra |
运行时间 |
0.012 s |
代码语言 |
C++ |
内存使用 |
0.51 MiB |
提交时间 |
2014-04-23 09:59:33 |
显示代码纯文本
- #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;
- }