Shirlies
宁静专注认真的程序媛~

我是用笨方法做的,首先找出该值的范围,然后分奇数偶数讨论。

#include "stdio.h"
#include "math.h"

int main()
{
 int n;
 int temp;

 while(scanf("%d",&n)==1&&n)
 {
  temp=(int)pow(n,0.5);

  if(temp*temp==n)
  {
   if(temp%2==0)
    printf("%d 1\n",temp);
   else
    printf("1 %d\n",temp);
   continue;
  }

  if(temp%2==0)
  {
   if(n-temp*temp<=temp+1)
    printf("%d %d\n",temp+1,n-temp*temp);
   else
    printf("%d %d\n",(temp+1)*(temp+1)-n+1,temp+1);
  }
  else
  {
   if(n-temp*temp<=temp+1)
    printf("%d %d\n",n-temp*temp,temp+1);
   else
    printf("%d %d\n",temp+1,(temp+1)*(temp+1)-n+1);
  }

 }

 return 0;
}

只要是知道排数的规则,用这个方法再加上细心一点就可以搞定了……

posted on 2012-01-18 21:20  Shirlies  阅读(169)  评论(0编辑  收藏  举报