HEIHEI 的每日心情值計算規則很有意思:週一至週五有課,晚上需寫作業,心情值固定為 0,故僅輸入上午、下午兩個數值,全天心情值為兩者之和;週六、週日放假,晚上打遊戲會產生心情值,需輸入上午、下午、晚上三個數值,全天心情值為三者之和。給定星期幾(英文全寫)與對應心情值,請計算並輸出該日總心情值。
第一行輸入一個整數 t(1 ≤ t ≤ 100),表示測試資料組數。接下來 t 行,每行第一項為星期幾(Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday),其後依序為該日心情值(週一至週五 2 個整數,週六、週日 3 個整數)。
對每組測試資料,輸出一行,即該日總心情值。
輸入: 7 Sunday 21 11 71 Friday 27 44 Tuesday 29 34 Monday 13 18 Tuesday 73 5 Friday 35 85 Saturday 68 25 11 輸出: 103 71 63 31 78 120 104
核心邏輯極簡單:判斷輸入的星期字串是否屬於工作日(前五項)或週末(後兩項)。可用字串陣列存放七天英文名,利用 strcmp 比對索引;索引 < 5 讀兩數求和,否則讀三數求和。時間複雜度 O(t),空間複雜度 O(1)。
#include <stdio.h>
#include <string.h>
int main() {
int t;
char week[7][10] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
scanf("%d", &t);
while (t--) {
char day[10];
int a, b, c = 0;
scanf("%s", day);
for (int i = 0; i < 7; ++i) {
if (strcmp(day, week[i]) == 0) {
if (i < 5) {
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
} else {
scanf("%d %d %d", &a, &b, &c);
printf("%d\n", a + b + c);
}
break;
}
}
}
return 0;
}
本題考察基本字串比對與條件分支,適合入門練習。關鍵在於正確解析輸入格式差異,邏輯清晰即可輕鬆解決。