比赛 20140423 评测结果 AAAAAAAAAA
题目名称 螺旋方阵 最终得分 100
用户昵称 Dijkstra 运行时间 0.012 s
代码语言 C++ 内存使用 0.51 MiB
提交时间 2014-04-23 09:59:33
显示代码纯文本
  1. #include<fstream>
  2. #include<vector>
  3. using namespace std;
  4. ifstream fin("spiral.in");
  5. ofstream fout("spiral.out");
  6. int N;
  7. struct spiral
  8. {
  9. int start;
  10. int end;
  11. }F[32769];
  12. void ANS(int a,int b)
  13. {
  14. int n,x,y,i,j,f=0;
  15. for(i=1;;i+=2)if(b>=F[i].start&&b<=F[i].end){n=i;break;}
  16. x=a-(a-n)/2;
  17. y=1+(a-n)/2;
  18. j=1;
  19. f=0;
  20. for(i=F[n].end;i>=F[n].start;i--)
  21. {
  22. if(i==b){fout<<y<<" "<<x<<endl;return;}
  23. if(j==n){f++;f%=4;j=1;}
  24. if(f==0){x--;j++;}
  25. if(f==1){y++;j++;}
  26. if(f==2){x++;j++;}
  27. if(f==3){y--;j++;}
  28. }
  29. }
  30. int main()
  31. {
  32. fin>>N;
  33. int i,a,b;
  34. F[1].start=F[1].end=1;
  35. for(i=3;i<=32767;i+=2)
  36. {
  37. F[i].start=(i-2)*(i-2)+1;
  38. F[i].end=i*i;
  39. }
  40. for(i=1;i<=N;i++)
  41. {
  42. fin>>a>>b;
  43. ANS(a,b);
  44. }
  45. return 0;
  46. }