文章
36
粉丝
505
获赞
55
访问
369.4k
用数组模拟
#include<bits/stdc++.h>
using namespace std;
int a[105], b[105], c[210];
int main()
{
int n;
string A, B;
cin >> n >> A >> B;
//字符转换成数字,反着记录,方便之后做乘法也要从后往前操作
for (int i = n - 1; i >= 0; i--)
a[n - i] = A[i] - '0';
for (int i = n - 1; i >= 0; i--)
b[n - i] = B[i] - '0';
//关键代码,模拟乘法,a的第i位乘以b的第j位最后会加到结果的第i+j-1位
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
c[i + j - 1] += a[i] * b[j];
//进位操作
int len = 2 * n;
for (int i = 1; i <= len; i++)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
//去除前面多余的0
while (!c[len])
len--;
//反着输出
for (int i = len; i >= 1; i--)
cout << c[i];
return 0;
}
登录后发布评论
暂无评论,来抢沙发