Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- vector<string>v;
- map<string,char>m;
- int countone(string s)
- {
- int cnt=0;
- for(int i=0; i<s.size(); i++)
- {
- if(s[i]=='1')
- {
- cnt++;
- }
- }
- return cnt;
- }
- string reset(string s,int cnt)
- {
- s.clear();
- for(int i=0; i<cnt; i++)
- {
- s.push_back('0');
- }
- return s;
- }
- string leftshift(string s)
- {
- int flag=0;
- for(int i=s.size()-1; i>0; i--)
- {
- if(s[i]=='1' && s[i-1]=='0')
- {
- s[i-1]='1';
- for(int j=i; j<s.size(); j++)
- {
- s[j]='0';
- }
- break;
- }
- }
- return s;
- }
- //00000010
- int main()
- {
- int cnt=1;
- string s="0",input,result;
- while(cnt<=7)
- {
- //cout<<s<<endl;
- v.push_back(s);
- while(1)
- {
- s[s.size()-1]='1';
- if(countone(s)==s.size())
- {
- break;
- }
- v.push_back(s);
- s=leftshift(s);
- v.push_back(s);
- }
- cnt++;
- s=reset(s,cnt);
- //cout<<s<<endl;
- }
- while(getline(cin,input))
- {
- //cout<<input<<endl;
- m.clear();
- result.clear();
- for(int i=0; i<input.size(); i++)
- {
- m[v[i]]=input[i];
- //cout<<m[i]<<endl;
- }
- input.clear();
- string input2;
- char c,c1,c2;
- while(1)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- cin>>c1;
- while(c1=='\n')
- {
- cin>>c1;
- }
- cin>>c2;
- while(c2=='\n')
- {
- cin>>c2;
- }
- //cout<<c<<" "<<c1<<" "<<c2<<endl;
- if(c=='0' && c1=='0' && c2=='0')
- {
- break;
- }
- else if(c=='0' && c1=='0' && c2=='1')
- {
- while(countone(input2)!=1)
- {
- input2.clear();
- while(input2.size()!=1)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==1)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- else if(c=='0' && c1=='1' && c2=='0')
- {
- while(countone(input2)!=2)
- {
- input2.clear();
- while(input2.size()!=2)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==2)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- else if(c=='0' && c1=='1' && c2=='1')
- {
- while(countone(input2)!=3)
- {
- input2.clear();
- while(input2.size()!=3)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==3)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- else if(c=='1' && c1=='0' && c2=='0')
- {
- while(countone(input2)!=4)
- {
- input2.clear();
- while(input2.size()!=4)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==4)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- else if(c=='1' && c1=='0' && c2=='1')
- {
- while(countone(input2)!=5)
- {
- input2.clear();
- while(input2.size()!=5)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==5)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- else if(c=='1' && c1=='1' && c2=='0')
- {
- while(countone(input2)!=6)
- {
- input2.clear();
- while(input2.size()!=6)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==6)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- else if(c=='1' && c1=='1' && c2=='1')
- {
- while(countone(input2)!=7)
- {
- input2.clear();
- while(input2.size()!=7)
- {
- cin>>c;
- while(c=='\n')
- {
- cin>>c;
- }
- input2.push_back(c);
- }
- if(countone(input2)==7)
- {
- break;
- }
- result.push_back(m[input2]);
- }
- }
- }
- cout<<result<<endl;
- cin.ignore();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement