rt
#include<bits/stdc++.h>
#define ll long long
#define bug cout<<"BUG\n"
#define V vector
using namespace std;
const int N=2e5+10;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
auto Getnum=[&](string s){//将一个字符串转为十进制数
int ans=0;
int n=s.size(),ii2=1;
for(int i=n-1;i>=0;i--,ii2<<=1){
ans+=(s[i]-'0')*ii2;
}
return ans;
};
auto GetChar=[&](string s){//将一个01串转为大写字母
int ans=Getnum(s);
return (char)('A'+ans);
};
string s;
cin>>s;
if(s.size()%8!=0){
cout<<"Error";
return 0;
}
stringstream ans;
for(int it=0;it<s.size();it+=8){
bool fl=0;
for(int j=it;j<it+8;j++){
if(s[j]!='0'&&s[j]!='1') fl=1;
}
if(fl){
cout<<"Error";
return 0;
}
string l1=s.substr(it,3);
// cout<<it<<" "<<it+8<<" "<<l1<<"\n";
if(l1=="101"){
char lls=GetChar(s.substr(it+3,5));
// cout<<"Char: "<<lls<<"\n";
ans<<lls;
}else if(l1=="111"){
l1=" ";
// cout<<"空格\n";
ans<<l1;
}else{
if(s[it]=='0'){
string l2=s.substr(it,8),l3=s.substr(it+8,8);
// cout<<"Number String: "<<l2<<" "<<l3<<"\n";
if(l3[0]!='0'){
cout<<"Error";
return 0;
}
int k1=Getnum(l2),k2=Getnum(l3);
k1/=2;k2/=2;
// cout<<"Number: "<<k1<<" "<<k2<<"\n";
ans<<to_string(k1+k2);
it+=8;
}else{
cout<<"Error";
return 0;
}
}
}
cout<<ans.str();
return 0;
}
只错了5,记录