错第14,15个点,dalao求助
查看原帖
错第14,15个点,dalao求助
957917
ljkgs6789楼主2024/7/8 09:35
#include<bits/stdc++.h>
using namespace std;
char s[200000],m[200000];
int n,cnt,cntc;
char c[10000];
char t[30]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
bool one(char a,char b,char c){
	if(a=='1'&&b=='0'&&c=='1'){
		return true;
	}
	return false;
}
bool two(char a,char b,char c){
	if(a=='1'&&b=='1'&&c=='1'){
		return true;
	}
	return false;
}
bool three(char a){
	if(a=='0'){
		return true;
	}
	return false;
}
int mi(int a,int b){
	int num=1;
	for(int i=1;i<=b;i++){
		num*=a;
	}
	return num;
}
void add(int num){
	if(num<10){
		c[1]=(num+'0');
		cntc=1;
	}else{
		if(num<100){
			c[1]=(num/10+'0');
			c[2]=(num%10+'0');
			cntc=2;
		}else{
			if(num<1000){
				c[1]=(num/100+'0');
				c[2]=(num%100/10+'0');
				c[3]=(num%100%10+'0');
				cntc=3;
			}
		}
	}
}
int main(){
	cin>>s;
	n=strlen(s);
	if(n%8!=0){
		cout<<"Error";
		return 0;
	}
	for(int i=0;i<n;i++){
		if(s[i]>'1'||s[i]<'0'){
			cout<<"Error";
			return 0;
		}
	}
	for(int i=1;i<=n/8;i++){
		if(one(s[i*8-8],s[i*8-7],s[i*8-6])){
			int num=0;
			for(int j=i*8-1,k=0;j>=i*8-5;j--,k++){
				num+=int(s[j]-'0')*mi(2,k);
			}
			if(num>=26){
				cout<<"Error";
				return 0;
			}
			m[++cnt]=t[num];
		}
		if(two(s[i*8-8],s[i*8-7],s[i*8-6])){
			m[++cnt]=' ';
		}
		if(three(s[i*8-8])){
			if(three(s[(i+1)*8-8])){
				int num=0;
				for(int j=i*8-1,k=0;j>=i*8-5;j--,k++){
					num+=int(s[j]-'0')*mi(2,k);
				}
				int sum=0;
				for(int j=(i+1)*8-1,k=0;j>=(i+1)*8-5;j--,k++){
					sum+=int(s[j]-'0')*mi(2,k);
				}
				int ans;
				ans=num/2+sum/2;
				add(ans);
				for(int j=1;j<=cntc;j++){
					m[++cnt]=c[j];
				}
				i++;
			}else{
				cout<<"Error";
				return 0;
			}
		}
	}
	for(int i=1;i<=cnt;i++){
		cout<<m[i];
	}
	return 0;
}
2024/7/8 09:35
加载中...