日期: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;
}
沒有留言:
張貼留言