回车型

#include<stdio.h>

#include<math.h>

 int main()

 {long n,i,m,x,y;

  while (scanf("%d",&n),n)

  {m=sqrt(n);

  if (m*m==n)

{if (m%2==0)

{x=m;y=1;}

else {x=1;y=m;}}

  else  {

   if (m%2==1)

   {x=0;y=m+1;

    if (n-m*m<=m+1) x=x+n-m*m;

    else {x=m+1;

          n=n-m*m-m-1;

          y=y-n;    }    }

   else   {x=m+1;y=0;

    if (n-m*m<=m+1) y=y+n-m*m;

    else    {y=m+1;

     n=n-m*m-m-1;

     x=x-n;     }    }   }

   printf("%d %d\n",x,y);

  } return 0;

 } 按照如果输出,1为(1,1)3为(2,2),答案是网上查的,尚在理解挺妙的

25 24 23 22 21 

10 11 12 13 20

9  8   7 14 19

2  3   6 15 18

1  4   5 16 17

 

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=13&page=show_problem&problem=1102

posted @ 2013-02-28 19:08  L kill  阅读(129)  评论(0编辑  收藏  举报