二进制?十进制!

二进制?十进制!

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;
} 
全部评论

相关推荐

05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务