日期:2025年9月15日
ZeroJudge 題目連結:d984. 棄保效應
解題想法
我用三層 if 解題,討論 A、B、C 三個人分別為最高票的狀況下,第一名票數減去第三名的票數之後是否仍大於第二名的票數。
Python 程式碼
使用時間約為 17 ms,記憶體約為 3.3 MB,通過測試。
import sys
for line in sys.stdin:
a, b, c = map(int, line.split()) # 三個人的票數
if a > b and a > c: # A 最高票
if b > c: # B 第二名
if a-c > b: print("A") # A 減 C 的票數還贏
else: print("B") # 反之 B 贏
else: # C 第二名
if a-b > c: print("A") # A 減 B 的票數還贏
else: print("C") # 反之 C 贏
elif b > a and b > c: # B 最高票
if a > c: # A 第二名
if b-c > a: print("B") # B 減 C 的票數還贏
else: print("A") # 反之 A 贏
else: # C 第二名
if b-a > c: print("B") # B 減 A 的票數還贏
else: print("C") # 反之 C 贏
else: # C 最高票
if a > b: # A 第二名
if c-b > a: print("C") # C 減 B 的票數還贏
else: print("A") # 反之 A 贏
else: # B 第二名
if c-a > b: print("C") # C 減 A 的票數還贏
else: print("B") # 反之 B 贏
C++ 程式碼
使用時間約為 2 ms,記憶體約為 76 kB,通過測試。
#include <cstdio>
using namespace std;
int main() {
int a, b, c; // 三個人的票數
while(scanf("%d %d %d", &a, &b, &c) != EOF) {
if (a > b && a > c) { // A 最高票
if (b > c) { // B 第二名
if (a-c > b) printf("A\n"); // A 減 C 的票數還贏
else printf("B\n"); // 反之 B 贏
} else { // C 第二名
if (a-b > c) printf("A\n"); // A 減 B 的票數還贏
else printf("C\n"); // 反之 C 贏
}
} else if (b > a && b > c) { // B 最高票
if (a > c) { // A 第二名
if (b-c > a) printf("B\n"); // B 減 C 的票數還贏
else printf("A\n"); // 反之 A 贏
} else { // C 第二名
if (b-a > c) printf("B\n"); // B 減 A 的票數還贏
else printf("C\n"); // 反之 C 贏
}
} else { // C 最高票
if (a > b) { // A 第二名
if (c-b > a) printf("C\n"); // C 減 B 的票數還贏
else printf("A\n"); // 反之 A 贏
} else { // B 第二名
if (c-a > b) printf("C\n"); // C 減 A 的票數還贏
else printf("B\n"); // 反之 B 贏
}
}
}
return 0;
}
沒有留言:
張貼留言