求解!!!
  • 板块灌水区
  • 楼主min1127
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/18 11:48
  • 上次更新2025/1/18 15:42:58
查看原帖
求解!!!
1345662
min1127楼主2025/1/18 11:48
#include<bits/stdc++.h>
using namespace std;
string szr(long long n){//十转二
	string s="",s1="";
	while(n>0){
		s+=(n%2)+48;
		n/=2;
	}
	for(int i=s.size()-1;i>=0;i--)s1+=s[i];
	return s1;	
}
long long ezs(string x){//二转十
	int sum=0;
	for(int i=0;i<x.length();i++)sum+=(x[i]-48)*pow(2,x.length()-1-i);
	return sum;
}
string szsl(long long x){//十转十六
	string s1,s2;
	while(x>0){
		if(x%16>=10)s1+=x%16+55;
		else s1+=x%16+48;
		x/=16;
	}
	for(int i=s1.length()-1;i>=0;i--)s2+=s1[i];
	if(s2.length()==1) return "0"+s2;
	return s2;
}	
int main(){
	long long n;
	cin>>n;
	if(n==0){
		cout << "00";
		return 0;
	}
	string s=szr(n),s1;
	int j=0;
	for(int i=s.length()-1;i>s.length()-s.length()%7;i--){
		s1+=s[i];
		j++;
		if(j==7){
			reverse(s1.begin(),s1.end());
			s1="1"+s1;
			cout << szsl(ezs(s1))<<" ";
			j=0;
		}	
	}
	string s2;
	for(int i=0;i<s.length()%7;i++){
		s2+=s[i];
	}
	cout << szsl(ezs(s2));
	return 0;
}

哪里错了

2025/1/18 11:48
加载中...