02:大整数乘法
//可以ac
#include<bits/stdc++.h>
using namespace std;
string mul(string a,string b)
{
int count0=a.size();
int count1=b.size();
int res[1010];
memset(res,0,sizeof(res));
//
int count=0;//jishuqi
int num0=0,num1=0,num2=0,n=0;//n jinwei
//fanzhuan
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
//
for(int i=0;i<a.size();i++)
{
num0=a.at(i)-'0';
for(int j=0;j<b.size();j++)
{
num1=b.at(j)-'0';
num2=count+j;//
//
int tmp=num0*num1+n+res[num2];
res[num2]=tmp%10;
//
//cout<<res[num2]<<endl;
n=tmp/10;
//cout<<tmp<<endl;
}
num2++;
while(n)
{
res[num2]=n%10+res[num2];
n/=10;
num2++;
}
count++;
}
//输出
string s0="";
int num3=0;
for(int i=num2-1;i>=0;i--)
{
//
//cout<<res[i]<<endl;
char tmp=res[i]+'0';
if(num3!=0||tmp!='0')
{
s0+=tmp;
num3++;
}
}
if(num3==0)
{
return "0";
}
return s0;
}
int main()
{
string a,b;
cin>>a>>b;
cout<<mul(a,b);
}
总时间限制:
1000ms
内存限制:
65536kB
描述
求两个不超过200位的非负整数的积。
输入
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
12345678900 98765432100
样例输出
1219326311126352690000