文章

166

粉丝

68

获赞

855

访问

61.6k

头像
进制转换 - 华科 题解:使用bitset,拒绝手搓
P1720 华中科技大学软院机试题
发布于2025年2月28日 11:37
阅读数 192

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s;
    while(cin>>s){
        vector<int>a;
        for(auto x:s){
            if(isdigit(x))a.push_back(x-'0');
            else a.push_back(x-'a'+10);
        }
        long long ans=0;
        for(auto x:a){
            ans*=12;
            ans+=x;
            cout<<x<<' ';
        }cout<<endl;
        cout<<ans<<endl;
        bitset<32>b(ans);
        string binary=b.to_string();
        int i=0;
        for(auto x:binary){
            if(i==8){
                cout<<' ';
                i=0;
            }
            cout<<x;
            i++;
        }cout<<endl;
    }
}

这里顺便介绍一下bitset用法,他是使用int或者01字符串生成一个bool的特殊数组,里面我们可以用set函数对某一位进行修改,true就是1,false就是0,如果给他一个参数如bitset<32>,他可以生成一个定长的结构,使用to_string方法则可以把这个数组转换成string01模式,对于本题,我们就可以直接输出了,注意,因为需要8位隔开,所以增加一个计数器即可。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发