大数的乘法

题目描述

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

输入

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

输出

 一行,相乘后的结果。

样例输入 Copy
123456789
123456789
样例输出 Copy
15241578750190521

代码实现:



#pragma GCC optimize(2)
#include 
using namespace std;
//定义数字部分
#define MAXLEN 250
#define RMAXLEN 500
//定义字符串,字符数组部分
string s1,s2;
int a[MAXLEN],b[MAXLEN],c[RMAXLEN],k;
int main()
{
	//输入两个数,用字符串格式输入
	cin>>s1;
	cin>>s2;
	//识别字符串长度,并进行逆序转存
	int len1=s1.length();
	for(int i=0;i=10)
			{
				//满足条件,前一位进整除位,当前位对10 mod
				c[k+1]+=c[k]/10;
				c[k]%=10;
			}
		}
	}
	//处理是否进位到了c[len]位
	int len=s1.length()+s2.length()+1;
	if(c[len]>0)
	{
		len++;
	}
	//去除多余的前导0
	while(c[len-1]==0&&len>1)
	{
		len--;
	}
	//逆序输出
	for(int i=len-1;i>=0;i--)
	{
		cout<

你可能感兴趣的:(算法,c++)