二进制转换为三进制
- 题目:
输入一个2进制的数,要求输出该2进制数的3进制表示。
在3进制的表示中,只有0,1,2三种符号
Input
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是64
Output
n行,每行输出对应一个输入。
Sample Input
2
10110
1011
Sample Output
211
102
- 思路分析:
先将二进制转化为十进制
再将十进制转化为三进制
- 代码:
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
int m;
cin>>m;
while(m--)
{
char s[65];
int n,number=0,m=0;
cin>>s;
n=strlen(s); //字符串s的长度
for(int i=0;i<n;i++)
{
number=number*2; //2进制转为十进制
number+=s[i]-'0';
}
while(number)
{
s[m++]=number%3; //十进制转为三进制
number=number/3;
}
for(int i=m-1;i>=0;i--)
{
printf("%d",s[i]);
}
cout<<endl;
}
return 0;
}