博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSK-61 二进制加法【大数】
阅读量:6342 次
发布时间:2019-06-22

本文共 2284 字,大约阅读时间需要 7 分钟。

给定两个二进制数组成的字符串,计算他们的和。

他们的和依然是字符串。

例如:

a = "11"

b = "1"

返回"100".

注意:千万别想着将二进制转换成10进制,计算以后再转换成二进制。

那样,在大数的时候,肯定溢出哦~

格式:

第一行输入两个长度不超过100的二进制字符串,中间以空格间隔开。

接下来输出两个二进制数的和。

样例输入

1010 1011

样例输出

10101

 

问题链接

问题描述:(略)

问题分析

  大数加法问题,用数组模拟计算。

程序说明:(略)

参考链接:(略)

题记:想不到好方法则或暴力或模拟。

 

AC的C语言程序如下:

1 /* JSK-61 二进制加法 */ 2  3 #include 
4 #include
5 6 #define N 100 7 char a[N + 1], b[N + 1], c[N + 2]; 8 9 int main()10 {11 while(~scanf("%s%s", a, b)) {12 int i = strlen(a) - 1, j = strlen(b) - 1, carry = 0, k = N;13 for(;;) {14 if(a[i] == '0' && b[j] == '0') {15 c[k] = (carry ? '1' : '0');16 carry = 0;17 } else if(a[i] == '1' && b[j] == '1') {18 c[k] = (carry ? '1' : '0');19 if(carry == 0)20 carry = 1;21 } else22 c[k] = (carry ? '0' : '1');23 24 25 k--; i--; j--;26 if(i < 0 && j < 0) break;27 if(i < 0) {i = 0; a[i] = '0';}28 if(j < 0) {j = 0; b[j] = '0';}29 }30 // 最后的进位处理31 c[k] = carry + '0';32 // 去掉高位的033 while(c[k] == '0' && k < N)34 k++;35 36 // 输出结果37 c[N + 1] = '\0';38 printf("%s\n", &c[k]);39 }40 41 return 0;42 }

 

WA的C语言程序如下:

1 /* JSK-61 二进制加法 */ 2  3 #include 
4 #include
5 6 #define BASE 2 7 #define N 100 8 char a[N + 1], b[N + 1], c[N + 2]; 9 10 int main(void)11 {12 // 读入2个数放入数组a[]和b[]13 while(~scanf("%s%s", a, b)) {14 int i = strlen(a) - 1, j = strlen(b) - 1, k = N;15 char carry = 0;16 // 2个数相加17 for(; ;) {18 char t = a[i--] - '0' + b[j--] - '0' + carry;19 carry = t / BASE;20 c[k--] = t % BASE + '0';21 22 if(i < 0 && j < 0) break;23 if(i < 0) {a[0] = '0'; i = 0;}24 if(j < 0) {a[0] = '0'; j = 0;}25 }26 // 最后的进位处理27 c[k] = carry + '0';28 // 去掉高位的029 while(c[k] == '0' && k < N)30 k++;31 32 // 输出结果33 c[N + 1] = '\0';34 printf("%s\n", &c[k]);35 }36 37 return 0;38 }

 

转载于:https://www.cnblogs.com/tigerisland/p/9694752.html

你可能感兴趣的文章
python之基本数据类型及深浅拷贝
查看>>
将bootstrap弹出框的点击弹出改为鼠标移入弹出
查看>>
SKF密码设备研究
查看>>
数据对象映射模式(通过工厂模式和注册树模式)v2
查看>>
4939 欧拉函数[一中数论随堂练]
查看>>
MySQL笔记(一)
查看>>
spring boot 包jar运行
查看>>
通过VMWare安装Linux(Ubuntu) 虚拟机在Window10系统和问题解决方案
查看>>
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
.NET与C#
查看>>
在uwp仿制WPF的Window
查看>>
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>