天天看点

uva 10161 Ant on a Chessboard(蛇型矩阵)

题意:

从(1,1)点出发,逆时针,然后顺时针,一直循环绕矩阵,求给出的数字的坐标是多少。

#include<iostream>
#include<cmath>
#define eps 1e-6
using namespace std;
int main(){
   int n, m;
   while(scanf("%d",&n)&&n){
    m=pow(n,0.5)+eps;
   //  cout<<m<<endl;
    if(m*m==n) {
      if(m%2) printf("%d %d\n",1,m);
      else printf("%d %d\n",m,1);
    }
    else{
      int te=n-m*m;
      if(m%2){
        if(te<=m) printf("%d %d\n",te,m+1);
        else printf("%d %d\n",m+1,(m+1)*(m+1)-n+1);
      }
      else{
        if(te<=m) printf("%d %d\n",m+1,te);
        else printf("%d %d\n",(m+1)*(m+1)-n+1,m+1);
      }
    }
   }
   
  return 0;
}