题目描述:
高精度乘单精度,a*b。 a是一个很大的非负整数,但不超过240位,b是一个非负整数不超过10000,求a*b。
输入
两行数字。
第一行是a,第二行是b。
输出
一行,输出a * b的计算结果.
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char const *argv[])
{
string s1, s2;
int a[250], c[500];
int m = 0;
int len1, len2;
memset(a, 0, sizeof(a) / sizeof(int));
memset(c, 0, sizeof(c) / sizeof(int));
cin >> s1;
cin >> m;
int len;
if (s1 == "0" || m == 0)
{
cout << "0";
}
else
{
len = s1.size();
for (int i = 0; i < len; i++)
{
a[i] = s1[len - i - 1] - '0';
}
}
for (int i = 0; i < len; i++)
{
c[i] = a[i] * m;
}
for (int i = 0; i < len; i++)
{
c[i + 1] = c[i + 1] + c[i] / 10;
c[i] = c[i] % 10;
}
while (c[len])
{
len++;
c[len] = c[len - 1] / 10;
c[len - 1] = c[len - 1] % 10;
}
for (int i = len - 1; i >= 0; i--)
{
cout << c[i];
}
return 0;
}