const int N = 1e5 + 10;//数据位数
string c1, c2;//存储两个输入的大数
int a[N], b[N], r[N];
//模拟乘法过程
void solve(int a[], int b[], int la, int lb) {
int i, j;
for(i = 0; i != N; i++)
r[i] = 0;
for(i = 0; i != la; i++)
{
for(j = 0; j != lb; j++)
{
int k = i + j;
r[k] += a[i] * b[j];
while(r[k] > 9)
{
r[k + 1] += r[k] / 10;//进位加一
r[k] %= 10;
k++;
}
}
}
int l = la + lb - 1;
while(r[l] == 0 && l > 0)
l--;
for(int i = l; i >= 0; i--)
cout << r[i];//输出结果
cout << endl;
}
void BigNumMulti()
{
while(cin >> c1 >> c2)
{
int la = c1.size(), lb = c2.size();
for(int i = 0; i != la; i++)
a[i] = (int)(c1[la - i - 1] - '0');//字符串转数组
for(int i = 0; i != lb; i++)
b[i] = (int)(c2[lb - i - 1] - '0');//字符串转数组
solve(a, b, la, lb);
}
}
算法:大数相乘,用字符串表示
最新推荐文章于 2025-03-16 21:12:02 发布