题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述:
多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)
输出描述:
每行输出对应的二进制数。
示例1
输入
0 1 3 8
输出
0 1 11 1000
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
string Transform(string s,int m,int n)
{
string res="";
int rem=0;
for(int i=0;i<s.size();i++)
{
int temp=s[i]-'0'+rem*m;
s[i]=temp/n+'0';
rem=temp%n;
}
int pos=0;
while(s[pos]=='0')
pos++;
return s.substr(pos);
}
int main()
{
string str;
while(cin>>str)
{
vector<int> v;
while(str.size()!=0)
{
int end=str[str.size()-1]-'0';
v.push_back(end%2);
str=Transform(str,10,2);
}
reverse(v.begin(),v.end());
for(int i=0;i<v.size();i++)
cout<<v[i];
cout<<endl;
}
return 0;
}