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

本文共 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

你可能感兴趣的文章
Git for Windows v2.8.3 Release Notes
查看>>
android离线缓存技术
查看>>
分享两款强大的文本编辑器
查看>>
StreamingPro添加Scala script 模块支持
查看>>
ping 丢包或不通时链路测试说明
查看>>
好好了解一下cookie
查看>>
聚合(根)、实体、值对象精炼思考总结
查看>>
Hibernate从入门到放弃(三)----持久化对象
查看>>
Aop RealProxy 千年遇BUG
查看>>
java解析虾米音乐
查看>>
rails将类常量重构到数据库对应的表中之三
查看>>
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
查看>>
android本地音乐播放器
查看>>
泛函编程(37)-泛函Stream IO:通用的IO处理过程-Free Process
查看>>
mysql 多行合并函数
查看>>
【案例】RAID卡写策略改变引发的问题
查看>>
Spring Test:Spring Test 4 整合 JUnit 4 使用
查看>>
Codeforces Round #326 (Div. 2) B. Pasha and Phone C. Duff and Weight Lifting
查看>>
[python知识] 爬虫知识之BeautifulSoup库安装及简单介绍
查看>>
AFNetworking 2.5.x 网络请求的封装
查看>>