记录编号 419296 评测结果 AAAAAAAAAAAA
题目名称 增强的乘法问题 最终得分 100
用户昵称 GravatarCeres 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2017-07-02 15:28:30 内存使用 0.39 MiB
显示代码纯文本
#include <fstream>
#include <string>
using namespace std;
ifstream ci("mul.in");
ofstream co("mul.out");
string a,b;
int num[3][102],len[3]={0},ans[10002]={0},sum[10002]={0},ma=1,mi=2;
int main()
{
	for(int i=1;i<=101;i++)
		num[1][i]=num[2][i]=0;
	ci>>a>>b;
	for(int i=a.length()-1;i>=0;i--)
		num[1][++len[1]]=a[i]-'0';
	for(int i=b.length()-1;i>=0;i--)
		num[2][++len[2]]=b[i]-'0';
	if(len[1]<len[2])
	{
		ma=2;
		mi=1;
	}
	for(int i=1;i<=len[mi];i++)
	{
		int k=0;
		for(int j=1;j<=len[ma];j++)
		{
			int p=j+i-1;
			sum[p]+=(num[mi][i]*num[ma][j]+k);
			if(sum[p]>9)
			{
				k=sum[p]/10;
				sum[p]%=10;
			}
			else
				k=0;
		}
		if(k)
			sum[len[ma]+i]+=k;
		k=0;
		for(int j=i;j<=len[ma]+i;j++)
		{
			ans[j]+=(sum[j]+k);
			if(ans[j]>9)
			{
				k=1;
				ans[j]%=10;
			}
			else
				k=0;
		}
		for(int j=1;j<=len[ma]+i;j++)
			sum[j]=0;
	}
	int q=len[ma]+len[mi];
	while(!ans[q] && q>1)
		q--;
	for(int i=q;i>0;i--)
		co<<ans[i];
	co<<endl;
	ci.close();
	co.close();
	return 0;
}