小明正在参加程序设计大赛,现在他遇到了这样一道难题:
给定两个整数 A 和 B,请计算二者的乘积。
看起来很简单不是吗?
请注意,A 和 B 的长度并不是那么简单哦,聪明的你可以帮帮小明吗?
输入输出格式
输入格式
输入包含两个整数 A,B,含义如题目描述所示。
整数之间以空格间隔。
输出格式
针对输入,请打印出 A 和 B 的乘积。
输入输出样例1
输入
1 2
输出
2
输入输出样例2
输入
1000 2
输出
2000
说明提示
A 和 B 的长度不大于 5000
void back(int arr[],int length)
{
int x = 0;
while (x != length&&x<length-1)
{
int tmp = arr[x];
arr[x] = arr[length - 1];
arr[length - 1] = tmp;
x++;
length--;
}
}
int main()
{
int arr[100][1000] = { 0 };
char a1[1000] = { 0 };
char b1[1000] = { 0 };
int a[1000] = { 0 };
int b[1000] = { 0 };
scanf("%s%s", &a1, &b1);
int size1 = strlen(a1);
int size2 = strlen(b1);
for (int i = 0; i < size1; i++)
{
a[i] = a1[i]-'0';
}
for (int i = 0; i < size2; i++)
{
b[i] = b1[i] - '0';
}
back(a,size1);
back(b,size2);
int y = 0;
for (int i = 0; i < size2; i++)
{
for (int j = 0; j < size1; j++)
{
arr[i][y+j] = b[i] * a[j];
}
y++;
}
int sum[1000] = { 0 };
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 100; j++)
{
sum[i] += arr[j][i];
}
}
int i = 0;
int size3 = 0;
while (sum[i]!=0)
{
if (sum[i] >= 10)
{
sum[i + 1] += sum[i] / 10;
sum[i] %= 10;
}
i++;
size3++;
}
back(sum, size3);
for(int j = 0; j < size3;j++)
{
printf("%d", sum[j]);
}
return 0;
}