C语言中的大数相乘问题
2016-09-30 20:32
274 查看
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");
仅供参考,有好的想法可以一起交流
相关文章推荐
- C语言大数相乘的问题
- C语言大数相乘问题普通算法->acm.scu.edu.cn:1002
- C语言实现两个大数相乘问题
- 一道C语言面试题——大数相乘的问题
- 阶乘问题(大数阶乘)简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 *【模板】 )
- 算法题-大数相乘问题
- 大数相乘问题---转载
- 华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言
- 【C语言】大数相乘
- 算法理解——大数相乘问题
- 数学问题3:两个大数相乘
- 多项大数相乘后果不可预知性的问题所在!
- 大数问题:用字符串解决大数相加和相乘
- C语言:大数相乘.
- 大数相乘问题
- 大数问题:用字符串解决大数相加和相乘
- 大数问题:用字符串解决大数相加和相乘(转载)
- 大数相乘的问题
- 大数问题:用字符串解决大数相加和相乘
- UVA 10106 - Product (大数相乘问题)