02:大整数乘法

02:大整数乘法

//可以ac
#include<bits/stdc++.h>
using namespace std;
string mul(string a,string b)
{
	int count0=a.size();
	int count1=b.size();
	int res[1010];
	memset(res,0,sizeof(res));
	//
	int count=0;//jishuqi
	int num0=0,num1=0,num2=0,n=0;//n jinwei
	//fanzhuan
	reverse(a.begin(),a.end());
	reverse(b.begin(),b.end());
	//
	for(int i=0;i<a.size();i++)
	{
		num0=a.at(i)-'0';
		
		for(int j=0;j<b.size();j++)
		{
			num1=b.at(j)-'0';
			num2=count+j;//
			//
			int tmp=num0*num1+n+res[num2];
		    res[num2]=tmp%10;
		    //
		    //cout<<res[num2]<<endl;
		    n=tmp/10;
		    //cout<<tmp<<endl;
		}
		num2++;
		while(n)
		{
			
			res[num2]=n%10+res[num2];
			n/=10;
			num2++;
		}
		count++;
	}
	//输出 
	string s0="";
	int num3=0;
	for(int i=num2-1;i>=0;i--)
	{
		
		//
		//cout<<res[i]<<endl;
		char tmp=res[i]+'0';
		if(num3!=0||tmp!='0')
		{
				s0+=tmp;
				num3++;
		}
	
	}
	if(num3==0)
	{
		return "0";
	}
	return s0;
 } 
 int main()
 {
 	string a,b;
 	cin>>a>>b;
 	cout<<mul(a,b);
 }

总时间限制: 

1000ms

内存限制: 

65536kB

描述

求两个不超过200位的非负整数的积。

输入

有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

输出

一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

样例输入

12345678900
98765432100

样例输出

1219326311126352690000
发布了78 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42333573/article/details/97611364