九度 1138

来源:互联网 发布:ubuntu16 更换软件源 编辑:程序博客网 时间:2024/06/07 03:19
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<stack>using namespace std;//判断是不是等于零bool judge(string s){int num=0;for(int i=0;i<s.length();i++)if(s[i]=='0')num++;if(num==s.length())return false;elsereturn true;}//返回两位数除以2以后的结果char change(int tt,char ch){int num=tt*10+(ch-'0');return char('0'+num/2);}int main(){string s;while(getline(cin,s)){//如果是0或者1,直接输出if(s=="0"||s=="1")cout<<s<<endl;//不然 进行以下运算else{stack<char> ss;//循环遍历,直到所有的数字都为零while(judge(s)==true){int index=-1;//找到第一个数字不为零的位for(int i=0;i<s.length()&&index==-1;i++)if(s[i]!='0')index=i;//如果位数最大的数字为零int tt=0;if(s[index]=='1'){tt=1;s[index]='0';index++;}//一次往下除2while(index!=s.length()){int temp=s[index]-'0';s[index]=change(tt,s[index]);if(temp%2==1)tt=1;elsett=0;index++;}if(tt==0)ss.push('0');elsess.push('1');}//把二进制里面的数字都输出while(ss.empty()==false){cout<<ss.top();ss.pop();}cout<<endl;}}return 0;}

0 0
原创粉丝点击