UVa 10106 Product
题目大意:大数乘法
解题思路:跟做加法差不多
#include<cstdio>
#include<cstring>
char str1[10000];
char str2[10000];
int temp1[10000];
int temp2[10000];
int ans[10000];
int main() {
while (scanf("%s%s", str1, str2) != EOF) {
int j = 0;
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len1 == 1 && str1[0] == '0')
printf("%d\n", 0);
else if (len2 == 1 && str2[0] == '0')
printf("%d\n", 0);
else {
for (int i = len1 - 1; i >= 0; i--)
{
temp1[j++] = str1[i] - '0';
}
j = 0;
for (int i = len2 - 1; i >= 0; i--)
temp2[j++] = str2[i] - '0';
for (int i = 0; i < len1; i++)
{
for (int j = 0; j < len2; j++)
ans[i + j] += temp1[i] * temp2[j];
}
for (int i = 0; ans[i]||i<len1+len2; i++)
{
if (ans[i] >= 10)
{
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
}
}
if (ans[len1 + len2 - 1] != 0)
printf("%d", ans[len1 + len2 - 1]);
for (int i = len1 + len2 - 2; i >= 0; i--)
{
printf("%d", ans[i]);
}
printf("\n");
}
memset(str1, 0, sizeof(str1));
memset(str2, 0, sizeof(str2));
memset(temp1, 0, sizeof(temp1));
memset(temp2, 0, sizeof(temp2));
memset(ans, 0, sizeof(ans));
}
return 0;
}