f427 - 高雄市109年資訊競賽國中組第五題
題目描述
題目要求讀取兩個字元,並根據這兩個字元的組合,輸出一個特定的字元。輸入的兩個字元代表一個數字,第一個字元是十位數,第二個字元是個位數。題目實際上是一個查表問題,輸入的數字對應到一個預先定義好的輸出字元。
解題思路
這道題的解題思路非常簡單,題目給定的輸入範圍很小,可以直接使用查表法。程式碼中 ans 陣列儲存了所有可能的輸入對應的輸出字元。程式碼讀取兩個字元,將它們轉換為一個整數索引,然後使用這個索引從 ans 陣列中獲取對應的輸出字元。getchar_unlocked 和 putchar_unlocked 函數用於提高輸入輸出的效率,避免緩衝區同步。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <stdio.h>
char ans[16]={'3','1','4','1','5','9','2','6','5','3','5','8','9','7','9','3'};
int main(){
char a=getchar_unlocked(),b=getchar_unlocked();
(a=='1'&&b>='0')?a=10+b-48:a-=48;
putchar_unlocked(ans[a]);
}