🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~” 

题目链接

 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;
}

 好了,今天的内容就到这里,我们明天再见。

Logo

集算法之大成!助力oier实现梦想!

更多推荐