AcWing 3616. 进制转换
原题链接
简单
作者:
y差c
,
2024-04-07 17:30:24
,
所有人可见
,
阅读 87
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string s;
cin>>s;
vector<int> number,res;
for(auto c : s)
{
if(c>='0'&&c<='9')
{
number.push_back(c-'0');
cout<<c<<' ';
}
else
{
number.push_back(c-'A'+10-32);//这边大小写不同无形+了32,所以要减去
if(c=='a') cout<<10<<' ';
else if(c=='b') cout<<11<<' ';
}
}
reverse(number.begin(),number.end());
cout<<endl;
while(number.size())
{
int t=0;//进位
for(int i=number.size()-1;i>=0;i--)
{
number[i]+=t*12;
t=number[i]%10;
number[i]/=10;
}
res.push_back(t);
while(number.size() && number.back()==0) number.pop_back();
}
reverse(res.begin(),res.end());
string ans;
for(auto x:res)
ans+=char(x+'0');
cout<<ans<<endl;
//字符串转为数字:
int x=0;
for(int i=0;i<ans.size();i++)
x=x*10+(ans[i]-'0');
for(int i=31;i>=0;i--)
{
cout<<(x>>i&1);
if(i%8==0) cout<<' ';
}
return 0;
}