记录编号 86117 评测结果 AAAAAAAAAAAA
题目名称 增强的乘法问题 最终得分 100
用户昵称 Gravatarranto 是否通过 通过
代码语言 C++ 运行时间 0.007 s
提交时间 2014-01-20 21:34:04 内存使用 0.29 MiB
显示代码纯文本
#include <fstream>
#include <iostream>
#include <string>

using namespace std;

ifstream in("mul.in");
ofstream out("mul.out");

class _int
{
private:
	int array[300];
public:
	int size;
	_int() : size(1)
	{
		for(int i=0; i!=300; ++i)
		{
			array[i]=0;
		}
	}
	void clear()
	{
		for(int i=0; i!=300; ++i)
		{
			array[i]=0;
		}
		size=1;
	}
	int &operator [](int a)
	{
		return array[a];
	}
	_int &operator =(_int a)
	{
		for(int i=0; i!=a.size; ++i)
		{
			this->array[i]=a[i];
		}
		this->size=a.size;
		return *this;
	}
};

istream &operator >>(istream &_in, _int &a)
{
	string tstring;
	a.clear();
	in>>tstring;
	int j(0);
	for(int i=tstring.size()-1; i!=-1; --i)
	{
		a[j]=tstring[i]-48;
		++j;
	}
	a.size=tstring.size();
	return _in;
}

ostream &operator <<(ofstream &_out, _int &a)
{
	for(int i=a.size-1; i!=-1; --i)
	{
		out<< a[i];
	}
	return _out;
}

_int operator *(_int &a, _int &b)
{
	_int c;
	_int itemp;
	for(int i=0; i!=a.size; ++i)
	{
		for(int j=0; j!=b.size; ++j)
		{
			itemp[i+j]+=a[i]*b[j];
		}
	}
	for(int i=0; i!=a.size+b.size+1; ++i)
	{
		if(itemp[i]>9)
		{
			int ttemp(itemp[i]/10);
			itemp[i]%=10;
			itemp[i+1]+=ttemp;
		}
	}
	itemp.size=a.size+b.size-2;
	if(itemp[a.size+b.size-2]!=0)
	{
		itemp.size=a.size+b.size-1;
	}
	if(itemp[a.size+b.size-1]!=0)
	{
		itemp.size=a.size+b.size;
	}
	return itemp;
}

int main()
{
	_int a, b;
	_int c;
	in>> a>> b;
	if((a[0]==0 and a.size==1)or(b[0]==0 and b.size==1))
	{
		out<< 0<< endl;
		return 0;
	}
	c=a*b;
	out<< c<< endl;
	return 0;
}