记录编号 |
86117 |
评测结果 |
AAAAAAAAAAAA |
题目名称 |
增强的乘法问题 |
最终得分 |
100 |
用户昵称 |
ranto |
是否通过 |
通过 |
代码语言 |
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;
}