2012-08-24 09:03:12Morris

[ZJ][Math] a348. 1. 貪食蛇

內容 :

問題敘述

貪食蛇遊戲中,若貪食蛇不被玩家控制蛇行方向時,其預設行進方向如下圖

 

 

一開始貪食蛇的頭在 (1,1) 這個位置,第二秒跑到 (1,2),接著 (2,2)(2,1)(3,1)(3,2),到第十秒時貪食蛇的頭在 (1,4) 位置上,以此類推。請寫一個程式,計算貪食蛇依照上述行進模式的位置。

 

輸入說明 :

輸入包含了l+1 (1 ≤ l ≤ 50),前l列中每一列有一個正整數Ni (1 ≤ Ni ≤ 2×109),代表l個貪食蛇行進的秒數,最後一列以0代表輸入結束。

輸出說明 :

對於輸入的每一個秒數,請輸出二個正整數,分別代表此時間點貪食蛇頭位置的橫座標與縱座標。

範例輸入 :

輸入範例一
8
20
25
0


輸入範例二
1
0

範例輸出 :

輸出範例一
2 3
5 4
1 5


輸出範例二
1 1

提示 :

出處 :

100三重考區資訊學科能力競賽 (管理:pcshic)

奇偶數分開討論即可

#include <stdio.h>
int main() {
    int m, i;
    while(scanf("%d", &m) == 1 && m) {
        for(i = 0; ; i++)
            if(i*i >= m)
                break;
        int n = i-1;
        if(n&1) {
            if(m - n*n <= n+1)
                printf("%d %d\n", m - n*n, n+1);
            else
                printf("%d %d\n", n+1, 2*n + 2 - m + n*n);
        } else {
            if(m - n*n <= n+1)
                printf("%d %d\n", n+1, m - n*n);
            else
                printf("%d %d\n", 2*n + 2 - m + n*n, n+1);
        }
    }
    return 0;
}