二进制?十进制!

二进制?十进制!

https://ac.nowcoder.com/acm/contest/11231/A

原题链接

题目大意:

输入两个数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;
} 
全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务