大数相乘
2016-07-22 09:28
441 查看
# include <stdio.h> # include <string.h> #define MAX 1005 void chtoint(int num[], char ch[], int len); int main(void) { char s1[MAX]; char s2[MAX]; int n; scanf("%d", &n); while (n--) { int num1[MAX] = {0}; int num2[MAX] = {0}; int cmul[MAX] = {0}; int csum[MAX] = {0}; scanf("%s %s", s1, s2); int len1 = strlen(s1); int len2 = strlen(s2); chtoint(num1, s1, len1); chtoint(num2, s2, len2); int i, j, x; for (i = 0; i < len1; i++) { int mul = 0; int c = 0; memset(cmul, 0, sizeof(cmul)); for (j = 0; j <= len2; j++) { mul = num1[i] * num2[j] + c; cmul[j] = mul % 10; //printf("cmul[%d] = %d\n", j, cmul[j]); c = mul / 10; //printf("c = %d\n", c); } int sum; int ci = 0; for (j = 0, x = i; x < MAX , j < MAX; x++) { sum = csum[x] + cmul[j++] + ci; csum[x] = sum % 10; ci = sum / 10; } } for (i = MAX-1; i >= 0; i--) { if (csum[i] != 0) { break; } } for (; i >= 0; i--) { printf("%d", csum[i]); } printf("\n"); } return 0; } void chtoint(int num[], char ch[], int len) { int i, j; for (i = len - 1, j = 0; i >= 0; i--) { num[j++] = ch[i] - '0'; } return ; }
相关文章推荐
- 深入分析C++中两个大数相乘结果不正确的问题
- JavaScript实现大数的运算
- 特殊问题 用两位long long 代替大数运算
- 【笔试面试】大数相乘
- Multiply Strings ---leetcode
- python实现大数相乘
- C语言 乘法 大数相乘
- C语言 加法 大数加法
- JAVA两个大数相乘
- POJ1001大数相乘
- 大数相乘
- C/C++编程题之大数相乘
- java BigDecimal 高精度运算 小数点处理详解
- 大整数相乘------java实现
- 大数相乘问题
- 判断自守数
- *foj 1453 Bignum Arithmetic
- 两个大数相乘JAVA版
- OJ 系列之常规练习题(二)
- OJ 系列之可怕的n的阶乘