50分求助
查看原帖
50分求助
916779
answerking楼主2024/5/5 16:09

记录

代码:

#include<iostream>
#include<algorithm>
#include<string> 
using namespace std;
string s,ans;
char word[]="0123456789abcdef";
string z16(int a){
	string ss="";
	while(a!=0){
		ss=ss+word[a%16];
		a/=16;
	}
	reverse(ss.begin(),ss.end());
	return ss;
}
int main(){
	cin>>s;
	int len=s.size();
	while(s[len]=='0'&&len>1)len--;
	if(s=="0"){
		cout<<0;
		return 0;
	}
	if(s.size()%4!=0){
		s=string(4-s.size()%4,'0')+s;
	}    
	s="0"+s;
	long long sum=0,g=512;
	for(int i=1;i<=s.size();i++){
		if(i%4==1&&i!=1){
			string ss=z16(sum);
			ans.append(ss);
			sum=0;
			g=512;
		}
		sum=sum+(s[i]-'0')*g;
		g/=8;
	}
	cout<<ans;
	return 0;
} 
2024/5/5 16:09
加载中...