切換
舊版
前往
大廳
主題

ZeroJudge - d681: BinaryCount 解題心得

Not In My Back Yard | 2018-10-29 18:53:38 | 巴幣 0 | 人氣 141

題目連結:


題目大意:
給定一個字串S,S代表一個邏輯運算式。每個運算元都是5位元長,而運算子只有「or」或「and」,詳見範例輸入。

求運算結果。輸出格式參見範例輸出。



範例輸入:
10001 or 10000 and 11101 and 01001
10111 or 10111 or 10010 or 00101
01000 and 01001 or 10011 and 11101
0111 and 00011 or 10010 or 11011
01001 and 10110 or 10010 and 11101



範例輸出:
10001||10000&&11101&&01001 = 00001
10111||10111||10010||00101 = 10111
01000&&01001||10011&&11101 = 11001
10111&&00011||10010||11011 = 11011
01001&&10110||10010&&11101 = 10000



解題思維:
只要解決輸入問題,實際上其他就沒有什麼特別的地方了。

由於不知字串的實際長度(因為有用空白隔開),C++可以使用 stringstream、getline() 函數,去處理未知長度的資料。

至於字串中的「or」、「and」,如果二進位數字本來叫轉換成 int 型態了,則直接使用內建的位元運算即可;如果是用字串存二進位數字,因為長度都固定,因此也可以使用迴圈一位一位去做位元運算。


此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作