DSOJ Multiplication of large integer(大数乘法)
2015-12-19 13:57
288 查看
题目链接
#include<stdio.h> //大整数相乘(输入为两个不超过200位的非负整数,无前导0,要求输出也无前导0) #include<string.h> //算法思想:类似于笔算整数的乘法,分别用一个乘数的各位数乘以另一个乘数的各位数,再错位相加, //最后进行进位的处理即可求得最终结果。 void compute(int *a, char *s1, char *s2) //大整数相乘 { int len1, len2, i, j; len1 = strlen(s1); len2 = strlen(s2); for (i = 400; i >= 0; i--) a[i] = 0; for (j = len2 - 1; j >= 0; j--) for (i = len1 - 1; i >= 0; i--) //用一个乘数的各位数乘另一个乘数的各位数,并错位相加 a[400 - (len1 + len2 - 2 - i - j)] += (s1[i] - '0')*(s2[j] - '0'); for (i = 400; i >= 0; i--) { if (a[i] > 9) //进位处理 { a[i - 1] += a[i] / 10; a[i] = a[i] % 10; } } i = 0; while (a[i] == 0) //不输出前导0 i++; if (i > 400) printf("0"); else { for (; i <= 400; i++) printf("%d", a[i]); } printf("\n"); } int main() { char s1[200], s2[200]; int a[401]; scanf("%s%s", s1, s2); compute(a, s1, s2); return 0; }
相关文章推荐
- java大数乘法的简单实现 浮点数乘法运算
- 用x64汇编语言编写384位无符号整数乘法(上)
- 用x64汇编语言编写384位无符号整数乘法(下)
- 用x64汇编语言编写384位无符号整数乘法(中)
- 大数乘法——POJ2389
- 大数乘法(C++)
- 51Nod 大数乘法
- DSOJ Sliding Window
- DSOJ Addition of Polynomial(多项式求和)
- ACM大数相乘
- 数据结构实验之大数相乘
- 算法重拾之路——大数乘法
- leetcode:Multiply Strings(字符串的乘法)【面试算法题】
- C语言实现大数整数乘法
- Leetcode: Multiply Strings
- 单链表实现大数加法、大数减法、大数乘法、大数指数运算
- poj 1001 Exponentiation
- 蓝桥杯 VIP 阶乘计算
- 精度计算(大数方面)
- uva 465 - Overflow 大数加法 大数乘法