1402
。。又逾時了 QAQ
#include<iostream>
#include<string>
using namespace std;
string pre(string &a)
{
int i = 0;
if (a[0]!='0') return a;
while (a[i] == '0') i++;
a = a.substr(i,a.length()-1); //删除前面的0,如000000007
return a ;
}
int main()
{
string a,b;//,t;
int mult,bit,i,j,n;
bool first;
while (cin>>a>>b)
{
first = true;
pre(a);
pre(b);
string t(a.length()+b.length(),'0');
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
for ( i = 0; i <= a.length()-1; i++)
{
bit = 0;
for ( j = 0; j <= b.length()-1; j++)
{
mult = (a[i]-48) * (b[j]-48) + bit;
bit = mult/10;
if(first)t[i+j] = mult%10 + 48; //第一次時候字元0000加上數字
else {
n = ((t[i+j] -48)+ mult%10); //如果剛好加起來是10
t[i+j] = n%10+ 48;
if(n>=10) bit ++;
}
}
if(bit!=0)
t[i+j++] = bit+48;
first = false;
}
reverse(t.begin(),t.end());
if(t[0] == '0') t = t.substr(1,t.length() - 1);
cout<<t<<endl;
}
return 0;
}