0
已解决
杨晨溪
新手守护
新手守护
题目描述 Description
将一个八进制数转化为一个二进制数。
输入描述 Input Description
一行,一个八进制下的整数
输出描述 Output Description
这个八进制数对应的二进制结果
样例输入 Sample Input
1234567654321
样例输出 Sample Output
1010011100101110111110101100011010001
数据范围及提示 Data Size & Hint
八进制数转换得到的十进制数结果有可能超过long long。
#include<bits/stdc++.h>
using namespace std;
string num[]={"000","001","010","011","100","101","110","111"};
string f(string s)
{
int sum=0,j=1;
if(s.size()==1)
{
for(int i=s.size()-1;i>=0;i--)
{
sum=sum+(s[i]-'0')*j;
j*=2;
}
return num[sum];
}
string s1=s.substr(s.size()-1,1);
string s2=s.substr(0,s.size()-1);
return f(s2)+f(s1);
}
int main()
{
string s,ss;
cin>>s;
ss=f(s);
for(int i=1;i<=3;++i)
if (ss[i]=='1') break;
else ss[i]='~';
for(int i=1;i<=ss.size();++i)
if (ss[i]!='~')
cout<<ss[i];
return 0;
}