记录编号 362893 评测结果 AAAAAAAAAAAA
题目名称 增强的乘法问题 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2017-01-09 13:25:10 内存使用 0.42 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define is_num(_tmp) (_tmp<='9'&_tmp>='0')
#define MAXN 20000
struct Bignum{
	int s[MAXN],len;
	void clear()
	{
		memset(s,0,sizeof(s));
		len=1;return ;
	}
	Bignum()
	{
		clear();
	}
	Bignum operator=(const char*num)
	{
		len=strlen(num);
		for(int i=0;i<len;i++)
		  s[i]=(num[len-1-i]^48);
		return *this;
	}
	Bignum operator*(const Bignum&a)
	{
		Bignum b;b.clear();
		b.len=a.len+len;
		for(int i=0;i<len;i++)
		  for(int j=0;j<a.len;j++)
		  {
		  	b.s[i+j]+=s[i]*a.s[j];
		  	b.s[i+j+1]+=b.s[i+j]/10;
		  	b.s[i+j]%=10;
		  }
		if(!b.s[b.len-1])b.len--;
		if(!b.s[b.len-1])b.clear();
		return b;
	}
	Bignum swap()
	{
		Bignum b;b.clear();
		b.len=len;
		for(int i=0;i<len;i++)
		  b.s[i]=s[len-1-i];
		return b;
	}
	void read()
	{
		clear();
		int i=0;
		char _tmp(getchar());
		while(!is_num(_tmp))_tmp=getchar();
		while(is_num(_tmp))
		  s[i++]=(_tmp^48),_tmp=getchar();
		len=i;
		*this=swap();
		return ;
	}
	void print()
	{
		for(int i=len-1;i>=0;i--)
		  putchar(s[i]+'0');
		return ;
	}
};
int main()
{
	freopen("mul.in","r",stdin);
	freopen("mul.out","w",stdout);
	Bignum n;
	Bignum m;
	n.read();
	m.read();
	(m*n).print();
	return 0;
}