题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述:
多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)
输出描述:
每行输出对应的二进制数。
示例1
输入
0 1 3 8
输出
0 1 11 1000
#include <iostream>
#include <string.h>
#include <cstring>
using namespace std;
int main(){
char str[32];
int input[32],len;
int output[100];
while(~scanf("%s",&str)){
len=strlen(str);
for(int i=0;i<len;i++){
input[i] = str[i] - '0';
}
memset(output,0,sizeof(output));
int sum = 1,d = 0, k = 0;
while(sum){
sum = 0;
for(int i=0;i<len;i++){
d = input[i] / 2;
sum += d;
if(i == (len - 1)){
output[k++] = input[i] % 2;
}
else
input[i+1] += (input[i]%2)*10;
input[i] = d;
}
}
if(k == 0)
cout<<0;
else{
for(int i=k-1;i>=0;i--)
cout<<output[i];
}
cout<<endl;
}
return 0;
}