e683 - 00621 - Secret Research
題目描述
題目要求根據給定的數字字串,判斷實驗結果是正面、負面、失敗還是未完成,並輸出對應的符號。實驗結果的判斷依據是字串是否符合特定的模式。如果無法確定實驗結果,則輸出預設的正面結果符號。
解題思路
此題主要考驗字串處理和條件判斷的能力。程式碼通過一系列的 if-else if-else 語句,檢查輸入字串是否符合題目中定義的四種實驗結果的模式。
- 正面結果:字串為 "1"、"4" 或 "78"。
- 負面結果:字串以 "35" 結尾。
- 實驗失敗:字串以 "94" 結尾,且第一個字元為 "9"。
- 實驗未完成:字串以 "190" 開頭。 如果字串不符合任何一種模式,則預設輸出正面結果的符號。
複雜度分析
- 時間複雜度: O(n),其中 n 是輸入字串的長度。因為程式碼需要檢查字串的特定部分,最壞情況下需要遍歷整個字串。
- 空間複雜度: O(1),程式碼只使用了常數級別的額外空間來儲存變數。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
int t;
string a;
cin >> t;
while(t--){
cin >> a;
int al=a.length();
if(a=="1"||a=="4"||a=="78")
cout << "+\n";
else if(a[al-1]=='5'&&a[al-2]=='3')
cout << "-\n";
else if(a[0]=='9'&&a[al-1]=='4')
cout << "*\n";
else if(a[0]=='1'&&a[1]=='9'&&a[2]=='0')
cout << "?\n";
else
cout << "+\n";
}
}