计蒜客 二进制加法
2016-06-12 21:17
162 查看
给定两个二进制数组成的字符串,计算他们的和。
他们的和依然是字符串。
例如:
a = “11”
b = “1”
返回”100”.
注意:千万别想着将二进制转换成10进制,计算以后再转换成二进制。
那样,在大数的时候,肯定溢出哦~
格式:
第一行输入两个长度不超过100的二进制字符串,中间以空格间隔开。
接下来输出两个二进制数的和。
样例输入
1010 1011
样例输出
10101
他们的和依然是字符串。
例如:
a = “11”
b = “1”
返回”100”.
注意:千万别想着将二进制转换成10进制,计算以后再转换成二进制。
那样,在大数的时候,肯定溢出哦~
格式:
第一行输入两个长度不超过100的二进制字符串,中间以空格间隔开。
接下来输出两个二进制数的和。
样例输入
1010 1011
样例输出
10101
#include <iostream> #include <cmath> #include <cstring> #include <stdio.h> #include <algorithm> #include <iomanip> using namespace std; int main() { char a[1000],b[1000]; while(cin>>a>>b) { int x=strlen(a); int y=strlen(b); char c[3005]; memset(c,'0',sizeof(c)); x--; y--; char z='0'; int k=3000; for(;;) { if(a[x]=='0'&&b[y]=='0') //首先是各种情况判断 { if(z=='1') {c[k]='1';z='0';} else c[k]='0'; } if(a[x]=='1'&&b[y]=='1') { if(z=='1') c[k]='1'; else {c[k]='0';z='1';} } if(a[x]=='1'&&b[y]=='0') { if(z=='1') c[k]='0'; else c[k]='1'; } if(a[x]=='0'&&b[y]=='1') { if(z=='1') c[k]='0'; else c[k]='1'; } k--; x--; y--; if(x==-1&&y==-1) break; //两个字符串都读到头就结束 if(x==-1) {x=0;a[x]='0';} //针对一个字符串到头另外一个还有剩余的处理 if(y==-1){y=0;b[y]='0';} } int i=0; if(z=='1') c[k]='1'; while(c[i]=='0'&&i<3000) i++; //i<3000 是对结果只有0的处理 for(;i<=3000;i++) { cout<<c[i]; } cout<<endl; } }
相关文章推荐
- 正确遍历删除List中的元素
- 关于光照模型的一点笔记
- 生产者与消费者问题,java实现
- 审、测、评 ---- 从测试过程看软件测试
- UVa 210 Concurrency Simulator (双端队列+模拟)
- mongoDB--1 概念
- Bootstrap超大屏幕和页面标题
- Python 模块使用
- spring注解
- gem5——building up-to-date kernels for gem5 running on ARM
- poj3372
- [HIHO1318]非法二进制(动态规划)
- What is URL?
- aiRPC(远程调用工具)
- 中断处理机制与工作队列
- 获取本机ip地址
- EditText超出字数限制,给用户提示
- 平面图转换成对偶图的应用
- 字符串的扩展与修复
- IBM APPSCAN 之安全学习