简单模拟二进制求和

Posted xxxsans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单模拟二进制求和相关的知识,希望对你有一定的参考价值。

题目:

给定两个二进制字符串,返回他们的和(用二进制表示)。

样例

a = 11

b = 1

返回 100

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
char a[maxn],s1[maxn],s2[maxn];
int main()
{
    scanf("%s",s1);
    scanf("%s",s2);
    int len1=strlen(s1);
    int len2=strlen(s2);
    if(len1<len2) swap(s1,s2);//s1保存较长串
    len1=strlen(s1);
    len2=strlen(s2);
    int add=0;
    len1--,len2--;
    while(len2>=0)
    {
        add+=s1[len1]-0+s2[len2]-0;
        a[len1]=add%2+0;
        add/=2;
        len1--,len2--;
    }
    while(add&&len1>=0)
    {
        add+=s1[len1]-0;
        a[len1]=add%2+0;
        add/=2;
        len1--;
    }
    if(add)//最后还有进位则后移加入进位即可
    {
        for(int i=strlen(a);i>0;i--)  a[i]=a[i-1];
        a[0]=add+0;
    }
    printf("%s
",a);
    return 0;
}

转载自https://blog.csdn.net/dl962454/article/details/80874715?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

以上是关于简单模拟二进制求和的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode5759. 找出所有子集的异或总和再求和(二进制模拟暴搜)

[leetcode] 67. 二进制求和

leetcode 简单第十六题 二进制求和

PAT 数列求和-加强版   (20分)(简单模拟)

leetcode 简单第十七题 二进制求和

数据结构线段树 (区间修改/区间求和)