题目大意:
输入两个数A,B,求两数二进制形式以十进制相加后结果
首先进制转换(十->二)。
接着考虑像高进度的方法,将每一位相加,最后关心最高位大于个位数,多加一位。
#include <cstdio>
#include <iostream>
using namespace std;
const int N = 10000000;
int a, b, s[N], s1[N], j, j1, final, i, ans[N];
int main()
{
scanf("%d%d", &a, &b);
i = a; //二进制转换
while(i) s[++j] = i % 2, i /= 2;
i = b;
while(i) s1[++j1] = i % 2, i /= 2;
final = max(j, j1);
int t = 0;
for(int i = 1; i <= final; i++)
{
ans[i] = s[i] + s1[i] + t;
t = ans[i] / 10;
ans[i] %= 10;
}
if(t) ans[++final] = t; //最高位大于个位,将位数加一
for(int ii = final; ii >= 1; ii--) printf("%d", ans[ii]);
printf("\n");
return 0;
} 
京公网安备 11010502036488号