2016年10月20日 星期四

TIOJ 1125 - 組合電路的模擬

http://tioj.infor.org/problems/1125

每次跑太麻煩了
反正狀態不多 所以直接先建表然後直接查就好

那時候不知道stringstream可以直接.clear() 然後就宣告了一堆= =


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<bits/stdc++.h>
using namespace std;

map<string,bitset<3> > ina;
map<string,int> inf;

int main(){
    for(int i=0;i<32;i++){
        bitset<5> bs(i);
        bitset<4> o;
        bitset<3> f;
        o[3]=!(bs[4]&bs[3]);
        o[2]=!(bs[3]&bs[2]);
        o[1]=!(bs[2]&bs[1]);
        o[0]=!(bs[1]&bs[0]);
        f[2]=!(o[3]&o[2]);
        f[1]=!(o[2]&o[1]);
        f[0]=!(o[1]&o[0]);
        stringstream ss;
        ss<<bs;
        string s;
        ss>>s;
        ina[s]=f;
        stringstream sss;
        sss<<f;
        string ssss;
        sss>>ssss;
        inf[ssss]++;
    }
    string s;
    while(cin>>s){
        if(s.length()==5){
            cout<<ina[s]<<endl;
        }
        else{
            cout<<inf[s]<<endl;
        }
    }
}

沒有留言:

張貼留言