熱門文章

2025年11月26日 星期三

ZeroJudge 解題筆記:k076. 簡易棒球模擬

作者:王一哲
日期:2025年11月26日


ZeroJudge 題目連結:k076. 簡易棒球模擬

解題想法


這題跟〈c297. APCS-2016-1029-4棒球遊戲〉很像,按照題目的敘述處理壘上跑者、得分及出局數即可。

Python 程式碼


使用時間約為 18 ms,記憶體約為 3.4 MB,通過測試。
bases = list(map(int, input().split()))
hit = int(input())
runs = 0
if hit == 4:
    runs = 1 + sum(bases)
    bases = [0, 0, 0]
elif hit == 3:
    runs = sum(bases)
    bases = [1, 0, 0]
elif hit == 2:
    runs = sum(bases[:2])
    if bases[2] == 1:
        bases = [1, 1, 0]
    else:
        bases = [0, 1, 0]
elif hit == 1:
    if bases[0] == 1:
        runs = 1
        bases[0] = 0
    if bases[1] == 1:
        bases[0] = 1
        bases[1] = 0
    if bases[2] == 1:
        bases[1] = 1
    bases[2] = 1
print(runs)
print(*bases)


C++ 程式碼


使用時間約為 2 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    int bases[3];
    for(int i=0; i<3; i++) scanf("%d", &bases[i]);
    int hit, runs = 0; scanf("%d", &hit);
    if (hit == 4) {
        runs = 1;
        for(int i=0; i<3; i++) {
            runs += bases[i];
            bases[i] = 0;
        }
    } else if (hit == 3) {
        runs += bases[0];
        bases[0] = 1;
        runs += bases[1];
        bases[1] = 0;
        runs += bases[2];
        bases[2] = 0;
    } else if (hit == 2) {
        runs += bases[0];
        if (bases[2] == 1) bases[0] = 1;
        else bases[0] = 0;
        runs += bases[1];
        bases[1] = 1;
        bases[2] = 0;
    } else if (hit == 1) {
        if (bases[0] == 1) {
            runs = 1;
            bases[0] = 0;
        }
        if (bases[1] == 1) {
            bases[0] = 1;
            bases[1] = 0;
        }
        if (bases[2] == 1) bases[1] = 1;
        bases[2] = 1;
    }
    printf("%d\n", runs);
    printf("%d %d %d\n", bases[0], bases[1], bases[2]);
    return 0;
}


沒有留言:

張貼留言