UVA10161Ant on a Chessboard

来源:互联网 发布:258优化网站 编辑:程序博客网 时间:2024/05/01 02:33

UVA-10161

题意:如样例所示将数字依序放入矩阵,求数字n放的坐标。
解题思路:通过while (k*k < n) k++;来获取n在哪一个L形外圈上。通过 (k,k)点的值( (k-1)^2 + k) 可以知道n处于L形外圈的那一部分( k奇数和偶数时两个是倒过来的)。然后计算出坐标。

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int n;int main () {    freopen("xx.in","r",stdin);    while (scanf("%d",&n) && n) {        int i,j,l,num;        double k=1;        while (k*k < n) k++;        l=k;        num=(l-1)*(l-1)+l;        if (l%2 == 0 ) {            if (num > n ){                j = l;                i = n - (num -l);            }else{                i = l;                j = l - (n - num);            }        }else {            if (num > n) {                i = l;                j = n - (num -l);            }else {                j = l;                i = l - (n - num);            }        }        printf("%d %d\n",i,j);    }}
0 0
原创粉丝点击