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