C语言中的大数相乘问题
来源:互联网 发布:淘宝绑定优酷怎么取消 编辑:程序博客网 时间:2024/05/22 15:40
Example: 11111111111111111111111 * 1111111111111111111111 = ?
char *str1 = (char *)malloc(sizeof(char) * 100); char *str2 = (char *)malloc(sizeof(char)* 100); scanf("%s%s", str1, str2); int len1 = strlen(str1); int len2 = strlen(str2); int len = len1 + len2 ; int * sum = (int *)malloc(sizeof(int)* len); memset(sum, 0, sizeof(int)* len); int cc = 0; //填充零的计数 for (int i = len1 - 1; i >= 0; i--) { char * temp = (char *)malloc(sizeof(char)* len); memset(temp, '0', sizeof(char)*len); int tag = 0; int count = len - 1; int n = cc; //进行相乘以后的填充 while (n > 0) { count--; n--; } for (int j = len2 - 1; j >= 0; j--) { temp[count] = ((str1[i] - '0') * (str2[j] - '0') + tag) % 10 + '0'; tag = ((str1[i] - '0') * (str2[j] - '0') + tag) / 10; count--; } // 处理有进位的情况 if (tag != 0) { temp[count] = tag + '0'; } count--; cc++; int flag = 0; // int llen = strlen(temp); for (int k = len - 1; k >= 0; k--) { int bb = (sum[k]) + (temp[k] - '0'); sum[k] = (bb + flag) % 10 ; flag = (bb + flag) / 10; } } //处理前面有零的情况 int kk = 0; while (sum[kk] == 0) { kk++; } for (int i = kk; i < len; i++) { printf("%d", sum[i]); } printf("\n");
仅供参考,有好的想法可以一起交流
0 0
- C语言中的大数相乘问题
- C语言大数相乘的问题
- C语言:大数相乘.
- 【C语言】大数相乘
- C语言大数相乘
- C语言大数相乘
- 大数相乘(C语言)
- 大数相乘-C语言实现
- 大数相乘C语言代码
- c语言实现大数相乘
- 【C语言代码】大数相乘
- C语言 大数相乘法
- C语言 乘法 大数相乘
- C语言实现大数相乘
- C语言大数相乘A × B problem
- 大数相乘 +方法2(C语言)
- C语言实现两个大数相乘
- 一道C语言面试题——大数相乘的问题
- 写优雅代码之聊一聊继承
- 选择排序算法
- Tiling
- hdu5114 Collision(一元同余方程)
- 交换两个数字
- C语言中的大数相乘问题
- 基于ssh框架的教务管理系统
- uva725division
- JAVA-线程/线程锁
- 每日练习0930
- bash: use: command not found (error occurred this command run in Terminal: # use mysql )
- Opencv2.4.9+VS2010环境搭建问题
- hdu5904 简单dp
- typecho-出现500server error页面怎么解决?