1365: 小汽車的位置

湯米先生發表於2020-12-01

1365: 小汽車的位置

有一輛智慧小車,最初(時間為0)的位置為(0,0),我們想知道它最後的位置。小車以每小時10公里的速度向北移動(以北為y軸正向,以東為x軸正向)。小車會受到一系列依照時間戳記排序的命令,1表示“向左轉”,2表示“向右轉”,3表“停止”。每個命令的前面有一個時間戳記,所以我們知道該命令是何時發出的。最後一個命令一定是“停止”。我們另外假設,這輛小車非常靈活,它可以在瞬間轉彎。
以下列輸入為例。小車在時間為5的時候收到一個“向左轉”的命令1,在時間10收到一個“向右轉”的命令2,在時間15收到一個“停止”的命令3。那麼在最後時間15的時候,小車的位置將在(-50,100)。程式只要求輸出小車最後的位置,第一個整數是x座標,第二個整數是y座標。

輸入
輸入包含多個命令,每個命令由整數time和command組成,表示在時刻time發出命令command。command的取值範圍1-3,含義如上所述。

輸出
輸出佔一行,包含兩個整數,表示小車的最終位置。兩個整數之間由空格隔開。

樣例輸入
5
1
10
2
15
3
樣例輸出
-50 100

2.程式碼

#include<stdio.h>
int main()
{
    int x = 0,y = 0;
    int c;
    int t1 = 0, t2;
    int s = 0;
    while(scanf("%d%d", &t2, &c))
    {
        switch(s)
        {
        case 0:
            y += (t2 -t1) * 10;
            break;
        case 1:
            x -= (t2 - t1) * 10;
            break;
        case 2:
            y -= (t2 - t1) * 10;
            break;
        case 3:
            x += (t2 - t1) * 10;
            break;
        }
        if(c == 3)
            break;
        else if( c == 1)
            s++;
        else
            s--;
        s = (s + 4) % 4;
        t1 = t2;
    }
    printf("%d %d\n", x, y);
    return 0;
}


相關文章