必须要用字符串储存 因为数字已经超过了longlong型的最大长度

进制转换

http://www.nowcoder.com/questionTerminal/0337e32b1e5543a19fa380e36d9343d7

//第一步就是设计一个对于字符串的除法 这一点比较难  不多说上代码
#include<cstdio>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string str;
vector<int>v;
void divide(){//对于字符串的代码 string str是全局的所以不用靠形参传递。
    int remain=0;  //保留余数
    for(int i=0;i<str.size();++i){//这一段代码请大家自己演示一遍就懂了
        int temp=remain*10+str[i]-'0';
        remain=temp%2;
        str[i]=temp/2+'0';
    }
    while(str[0]=='0'){//对于字符串除***有得到的商最前面有0,必须把0删除
        str.erase(0,1);
    }
}

int main(){
    
    while(cin>>str){
        while(!str.empty()){
            v.push_back((str.back()-'0')%2);//字符串最后一位对2取模就能得到余数
            divide();
        }
        for(int i=v.size()-1;i>=0;i--){//用了一个容器逆序输出
            cout<<v[i];
        }
        cout<<endl;
    }
    return 0;
}


全部评论
没有清除vector上一轮保存的数据,若多轮输入则会出错
点赞 回复 分享
发布于 2021-03-29 20:08

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
点赞 评论 收藏
分享
09-27 14:42
已编辑
浙江大学 Java
未来未临:把浙大放大加粗就行
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务