竞赛讨论区 > 【二进制-32进制】
头像
JYXC
发布于 2022-05-11 11:31
+ 关注

【二进制-32进制】

#include <bits/stdc++.h>
using namespace std;
int main(){
    string str1,str0,ret = "";
    
    while(cin >> str1){
        //cin >> str1;
        //反转既可以从头开始切割 
        reverse(str1.begin(),str1.end());
        //cout << str1 << endl;
        int n;//连续5位二进制对应的十进制数
        ret = ""; //结果字符串 
		for(int i = 0; i < str1.length(); i+=5){
			n = 0;
			//分析i后面是否还有5个数 
			if(str1.length()-1 - i + 1 >= 5){
				str0 = str1.substr(i, i+5);
				for(int j = 0; j <= str0.length()-1; j++){
					n += (str0[j]-'0') * pow(2,j);
				} 
				//cout << str0 << " : " << n << endl;	
			}
			//如果i后面长度<5 
			if(str1.length()-1 - i + 1 < 5){
				str0 = str1.substr(i,str1.length());
				for(int j = 0; j <= str0.length()-1; j++){
					n += (str0[j]-'0') * pow(2,j);
				} 
				//cout << str0 << " : " << n << endl;
				//break;
			}
			int t = n % 32;
	        if(t <= 9){ret += ('0' + t);}
	        else{ret += ('A' + (t-10));}  
		}
		//ret反转
	    reverse(ret.begin(),ret.end());
	    cout << ret << endl; 
    }

    return 0;
}
50%通过率,请大佬帮忙纠错

全部评论

(0) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐