大数相加
来源:互联网 发布:js正则表达式函数 编辑:程序博客网 时间:2024/06/06 03:08
大数相加(A+B)
这是一道很简单基础的面试题,大数相加转换成字符串处理即可
获取A,B的长度
字符串反序
进位处理
字符串反向
char *reverse_str(char *a) { if(a == NULL) return NULL; int len = strlen(a); char *left = a; char *right = a + len - 1; while(left < right) { *left ^= *right; *right ^= *left; *left ^= *right; if(left == (right - 1)) { break; } left++; right--; } return a;}
相加处理
char* add(char *a, char *b) { int len = strlen(a); int len_b = strlen(b); char ans[100]; memset(ans, 0, sizeof(ans)); len > len_b ? len : len_b; reverse_str(a); reverse_str(b); int i = 0, ret = 0, flag = 0; int tmp; while(i < len && flag == 0) { if(a[i] < '0' || a[i] > '9') { flag = 1; break; } else if(b[i] < '0' || b[i] > '9') { flag = 2; break; } tmp = (a[i] - '0') + (b[i] - '0') + ret; ans[i] += (tmp % 10) + '0'; ret = tmp / 10; i++; } if(flag == 1) { for(i; i < len; i++) { tmp = (b[i] - '0') + ret; ans[i] += (tmp % 10) + '0'; ret = tmp / 10; } } else if(flag == 2) { for(i; i < len; i++) { tmp = (a[i] - '0') + ret; ans[i] += (tmp % 10) + '0'; ret = tmp / 10; } } if(ret != 0) ans[i] = ret + '0'; reverse_str(ans); cout << ans;}
主函数
int main() { char a[100]; char b[100]; cin >> a; cin >> b; add(a, b); return 0;}
阅读全文
0 0
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 大数相加
- 网页动画
- 谈谈谷歌word2vec的原理
- Mybatis之使用注解开发CRUD
- 宽高变化动画代码,旋转动画代码(HTML5)
- IDEA新建文件名为红色字体的解决办法
- 大数相加
- 数据库几大范式
- 宏定义,const变量,枚举的区别
- hdu 3262
- myeclipse2017控制台打印中文乱码最有效解决方案
- CF276C Little Girl and Maximum Sum(贪心+差分)
- diy搭建异步邮件服务
- JS数字转换
- 如何用TensorFlow训练聊天机器人(附github)