🌈个人主页:羽晨同学
💫个人格言:“成为自己未来的主人~”
题目链接
P1303 A*B Problem - 洛谷https://www.luogu.com.cn/problem/P1303
解题思路
这道题的思路,其实和前面差不多,我们主要说一下最为关键的部分,在高精度乘法的模块部分,我们主要采用的是无进位乘法,就是将进位的处理,我们放在最后,先处理其余的部分。
代码实现
#include<iostream>
using namespace std;
const int N =1e6+10;
int a[N],b[N],c[N];
typedef long long LL;
LL la,lb,lc;
void mul(int a[],int b[],int c[])
{for(int i=0;i<la;i++){for(int j=0;j<lb;j++){c[i+j]+=a[i]*b[j];}}//处理进位 for(int i=0;i<lc;i++){c[i+1]+=c[i]/10;c[i]%=10; } while(lc>1 &&c[lc-1]==0) lc--;
}
int main()
{string x,y;cin>>x>>y;la=x.size();lb=y.size();lc=la+lb;for(int i=la-1;i>=0;i--) a[la-1-i]=x[i]-'0';for(int i=lb-1;i>=0;i--) b[lb-1-i]=y[i]-'0';mul(a,b,c);for(int i=lc-1;i>=0;i--) cout<<c[i];return 0;
}
好了,今天的内容就到这里,我们明天再见。