51NOD 1027 大数乘法

给出2个大整数A,B,计算A*B的结果。
 
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456
234567
Output示例
28958703552
解:以为很麻烦,其实很简单。。。
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 #define MAX 1005
 6 #define CLR(x) memset(x,0,sizeof(x))
 7 
 8 char a[MAX], b[MAX];
 9 int c[MAX + MAX];
10 
11 int main()
12 {
13     while (scanf_s("%s%s", a, MAX, b, MAX) != EOF)
14     {
15         int al = strlen(a), bl = strlen(b);
16         CLR(c);
17         for (int i = bl - 1; i >= 0; i--)
18             for (int j = al - 1; j >= 0; j--)
19                 c[i + j + 1] += (a[j] - '0') *(b[i] - '0');
20         for (int i = al + bl - 1; i > 0; i--)
21         {
22             c[i - 1] += c[i] / 10;
23             c[i] %= 10;
24         }
25         if (c[0]) printf("%d", c[0]);
26         for (int i = 1; i < al + bl; i++) printf("%d", c[i]);
27         printf("\n");
28     }
29     return 0;
30 }

 

posted @ 2018-09-11 14:05  Ekalos  阅读(116)  评论(0编辑  收藏  举报