二进制?十进制!
题目链接:https://ac.nowcoder.com/acm/problem/218048
方法一:数组
1 #include2 using namespace std; 3 int a, b; 4 long long aa, bb; 5 int ejza[20], ejzb[20]; 6 int main() 7 { 8 cin>>a>>b; 9 //求a的二进制数 10 int ai=0; 11 while(a) 12 { 13 ejza[ai]=a%2; 14 ai++; 15 a/=2; 16 } 17 for(int i=ai-1; i>=0; i--) 18 aa=aa*10+ejza[i]; 19 //求b的二进制数 20 int bi=0; 21 while(b) 22 { 23 ejzb[bi]=b%2; 24 bi++; 25 b/=2; 26 } 27 for(int i=bi-1; i>=0; i--) 28 bb=bb*10+ejzb[i]; 29 //求和 30 cout< bb; 31 return 0; 32 }
方法二:位运算
1 #include2 using namespace std; 3 int a, b; 4 long long aa, bb; 5 int main() 6 { 7 cin>>a>>b; 8 for(int i=15; i>=0; i--)//因为1<=A,B<=32768 9 { 10 aa = aa * 10 + ( ( a&(1<0); 11 bb = bb * 10 + ( ( b&(1<0); 12 } 13 cout< bb; 14 return 0; 15 }
方法三:函数(递归)
1 #include2 using namespace std; 3 int a, b; 4 5 long long ejz(int x)//递归求x的二进制的十进制表示 6 { 7 int sh=x/2; 8 int ys=x%2; 9 if(sh == 0) 10 return ys; 11 else 12 return 10*ejz(sh)+ys; 13 } 14 int main() 15 { 16 cin>>a>>b; 17 cout< ejz(b); 18 return 0; 19 }