概述
问题 C: 进制转换
时间限制 : 1.000 sec 内存限制 : 32 MB
题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入
多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)
输出
每行输出对应的二进制数。
样例输入
985
211
1126
样例输出
1111011001
11010011
10001100110
思路
借鉴 此篇文章
此题值得细细揣摩,很经典的问题。
代码
#include<cstdio>
#include<cstring>
int main(){
char a[100];
int b[100];
while(scanf("%s",a)!=EOF){
int len=strlen(a);
for(int i=0;i<len;i++){
b[i]=a[i]-'0';
}
int num[100],i=0,k=0,n=0;
while(i<len){
num[k]=(b[len-1]%2);
k++;
int w=0;
for(int j=i;j<len;j++){
int temp=b[j];
b[j]=(b[j]+w)/2;
if(temp%2==1){
w=10;
}
else w=0;
}
if(b[i]==0) i++;
}
for(int i=k-1;i>=0;i--) printf("%d",num[i]);
printf("n");
}
}
最后
以上就是喜悦月饼为你收集整理的《算法笔记》3.5小节——入门模拟->进制转换 问题 C: 进制转换的全部内容,希望文章能够帮你解决《算法笔记》3.5小节——入门模拟->进制转换 问题 C: 进制转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复