題解 CF61B 【Hard Work】
阿新 • • 發佈:2020-11-06
Translation
判斷字串 \(s_1, s_2, s_3\) 能否通過首位相連的方式組成 \(t_i\)(不考慮大小寫)。
Solution
首先,輸入 \(3\) 個字串 \(s_1, s_2, s_3\),因為不考慮大小寫,所以可以把它們全部都變成小寫(這裡以小寫為例,大寫也可以)。
接著,讀入一個 \(n\) ,表示有多少個 \(t_i\)。
然後,用 while 迴圈
讀入 \(t_i\),對於每一次迴圈:
- 轉換成小寫字母。
- 比對 \(6\) 中情況(詳見程式碼)。
- 符合輸出 \(\texttt{ACC}\)。
- 否則輸出 \(\texttt{WA}\)。
Code
string s1, s2, s3, y1, y2, y3; void work() { cin >> s1 >> s2 >> s3; for(int i = 0; i < s1.size(); i++) if(s1[i] >= 'a' && s1[i] <= 'z') y1 += s1[i]; else if(s1[i] >= 'A' && s1[i] <= 'Z') y1 += char(s1[i] + 32); for(int i = 0; i < s2.size(); i++) if(s2[i] >= 'a' && s2[i] <= 'z') y2 += s2[i]; else if(s2[i] >= 'A' && s2[i] <= 'Z') y2 += char(s2[i] + 32); for(int i = 0; i < s3.size(); i++) if(s3[i] >= 'a' && s3[i] <= 'z') y3 += s3[i]; else if(s3[i] >= 'A' && s3[i] <= 'Z') y3 += char(s3[i] + 32); int n; scanf("%d", &n); while(n--) { string qwq, qaq; cin >> qwq; for(int i = 0; i < qwq.size(); i++) if(qwq[i] >= 'a' && qwq[i] <= 'z') qaq += qwq[i]; else if(qwq[i] >= 'A' && qwq[i] <= 'Z') qaq += char(qwq[i] + 32); if(y1 + y2 + y3 == qaq) puts("ACC"); else if(y1 + y3 + y2 == qaq) puts("ACC"); else if(y2 + y3 + y1 == qaq) puts("ACC"); else if(y2 + y1 + y3 == qaq) puts("ACC"); else if(y3 + y2 + y1 == qaq) puts("ACC"); else if(y3 + y1 + y2 == qaq) puts("ACC"); else puts("WA"); } }