文章

60

粉丝

361

获赞

43

访问

522.9k

头像
纯字符串模拟乘法
P1475
发布于2021年1月17日 16:29
阅读数 8.0k

#include <bits/stdc++.h>
using namespace std;
string jiafa(string a,string b)//加法,返回字符串相加结果
{
	if(a.size()<b.size())
		swap(a,b);//保证a最长
	string c(a.size(),'0');
	b.insert(0,a.size()-b.size(),'0');
	int jinwei=0;
	for(int i=a.size()-1;i>=0;i--)
	{
		c[i]=(a[i]-'0'+b[i]-'0'+jinwei)%10+'0';
		jinwei=(a[i]-'0'+b[i]-'0'+jinwei)/10;
	}
	if(jinwei!=0)
		c.insert(0,1,'1');
	return c;
}
void chengfa(string a,string b)//返回乘法结果
{
	string sum="0";
	for(int j=b.size()-1;j>=0;j--)
	{
		int jinwei=0;

		//执行b的一位数*a所得结果
		string c(a.size(),'0');
		for(int i=a.size()-1;i>=0;i--)
		{	
			c[i]=((a[i]-'0')*(b[j]-'0')+jinwei)%10+'0';
			jinwei=((a[i]-'0')*(b[j]-'0')+jinwei)/10;
		}
		if(jinwei!=0)
			c.insert(0,1,jinwei+'0');
		c.insert(c.end(),b.size()-1-j,'0');//结果插入0

		sum=jiafa(c,sum);
	}
	cout<<sum<<endl;
}

int main()
{
	int n;
	string a,b;
	while(cin>>n>>a>>b)
		chengfa(a,b);
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发