JSK-61 二进制加法【大数】
给定两个二进制数组成的字符串,计算他们的和。
他们的和依然是字符串。
例如:
a = "11"
b = "1"
返回"100".
注意:千万别想着将二进制转换成10进制,计算以后再转换成二进制。
那样,在大数的时候,肯定溢出哦~
格式:
第一行输入两个长度不超过100的二进制字符串,中间以空格间隔开。
接下来输出两个二进制数的和。
样例输入
1010 1011
样例输出
10101
问题链接:JSK-61 二进制加法
问题描述:(略)
问题分析:
大数加法问题,用数组模拟计算。
程序说明:(略)
参考链接:(略)
题记:想不到好方法则或暴力或模拟。
AC的C语言程序如下:
1 /* JSK-61 二进制加法 */ 2 3 #include <stdio.h> 4 #include <string.h> 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 } else 22 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 // 去掉高位的0 33 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 <stdio.h> 4 #include <string.h> 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 // 去掉高位的0 29 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 }
分类:
计蒜客题解(JSK)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架