0
黄子扬
新手守护
新手守护
3818 高精度进制转换
题目描述 Description
我们可以使用一个3位的二进制数来表示八进制中的一个数。000、001、010、011、100、101、110、111分别对应八进制中的0~7。
例如对于八进制的整数
12
我们可以用二进制表示为
001010
现在需要输入一个二进制的数据,请你把它转换成八进制输出。
输入描述 Input Description
输入一个二进制整数(可能是0开头,不超过10000位)
输出描述 Output Description
输出对应的八进制数据(开头非0)
样例输入 Sample Input
1010
样例输出 Sample Output
12
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i,j,n,s28[10000],sum=0;
string s2;
string s8[10]={"0","1","2","3","4","5","6","7"};
getline(cin,s2);
if(s2.size()%3==1)
s2.insert(0,"00");
if(s2.size()%3==2)
s2.insert(0,"0");
j=s2.size()/3;
for(i=s2.size()-1;i>=0;i-=3)
{
s28[j]=(s2[i]-48)*1+(s2[i-1]-48)*2+(s2[i-2]-48)*4;
j--;
sum++;
}
for(i=1;i<=sum;i++)
cout<<s8[s28[i]];
return 0;
}