求帮助啊,为啥都是re
查看原帖
求帮助啊,为啥都是re
787214
Gjanuary楼主2024/8/30 15:07

在其他的平台以及案例都过来但是在洛谷平台substack1过来但是substack0全是re,这是什么情况?

#include<iostream>
#include<map>
using namespace std;
//  存储16进制 对应的二进制关系,直接赋值过mm["0001"] = "1" 这种方式linux过不去,window可以
map<string,string> mm = {
	{"0000", "0"}, 
	{"0001", "1"}, 
	{"0010", "2"},
	{"0011", "3"},
	{"0100", "4"},
	{"0101", "5"},
	{"0110", "6"},
	{"0111", "7"},
	{"1000", "8"},
	{"1001", "9"},
	{"1010", "A"},
	{"1011", "B"},
	{"1100", "C"},
	{"1101", "D"},
	{"1110", "E"},
	{"1111", "F"}
};

long long word,ys;// 接收要存储的数据
string binary="";// 用于存储对应的二进制数
bool f = false;
string toSix(string w){//  转化成16进制操作
	// 4合一处理
	string one = w.substr(0,4);
	string two = w.substr(4,4);
	cout<<mm[one]<<mm[two]<<" ";
}
int main(){
	cin>>word;
	// 短除法进行获取word对应的二进制数
	while(word){
		f = true;
		ys = word%2;// 此时的余数
		binary += to_string(ys);
		word /= 2;
	}
	if(f){
		long long dataSize = binary.size();// 获取长度查看第几组才是最后一组
		string tmpres = "";
		long long team = 0;// 用于记录组数
		for(long long i=0;i<dataSize;++i){
			if(i%7 == 0 && i!=0){	
				tmpres = "1"+tmpres;
				toSix(tmpres);
				tmpres = binary[i];
				team++;
			}else{
				tmpres = binary[i]+tmpres;
			}
		}
		// 最后最高位可能不足7位
		// 不足7位数进行补0
		long long diffSize = tmpres.size();
		for(long long i=1;i<=7-diffSize;++i){
			tmpres = "0"+tmpres;
		}
		tmpres = "0"+tmpres;// 最后一位补0
		toSix(tmpres);
	}else{
		cout<<"00";
	}
	
    return 0;
}

2024/8/30 15:07
加载中...