题解 | 进制转换

#include<iostream>
#include<string>
#include<stack>

using namespace std;

/*
	133
	remainder=	0		1		1
	current=  	1		13		13
	str=	  	0		6       6
*/
string Divide(string num,int n){
	int current;
	int remainder=0;    //余数
	for(int i=0;i<num.size();i++){
		current=remainder*10 + (num[i]-'0');
		remainder=current%n;
		num[i]=current/n+'0';
	}
	
	//去除前置多余的0
	int position=0;
	while(num[position]=='0') position++;
	return num.substr(position);    //去除掉包括posiotion前的元素
}

//十进制转n进制
void ConvertT2N(string num,int n){
	stack<int> s;
	
	int last;
	while(num.size()!=0){
		last=num[num.size()-1]-'0';
		s.push(last%2);
		num=Divide(num,2);  //自定义:字符串除n取整
	}
	
	while(!s.empty()){
		cout<<s.top();
		s.pop();
	}
	cout<<endl;
}

int main(){
	string num; //输入可能为30位整数,用long long装不下
    while(cin>>num){
		ConvertT2N(num,2);
	}

	return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务