yu2001feng @ 2018-09-11 16:01:06
代码如下,新手菜鸟,写的有点乱
using namespace std;
void gjCheng(int[],int[] ,int[]);
int main(int argc, char** argv) { int a[1000]={0},b[1000]={0},c[1000]={0}; string strA,strB; int i,j,k,temp=0,lena,lenb; getline(cin,strA);getline(cin,strB);
if(strA[0]=='-'&&strB[0]!='-')
{
strA=strA.substr(1,strA.size()-1);
cout<<"-";
}
if(strA[0]!='-'&&strB[0]=='-')
{
strB=strB.substr(1,strB.size()-1);
cout<<"-";
}
if(strA[0]=='-'&&strB[0]=='-')
{
strA=strA.substr(1,strA.size()-1);
strB=strB.substr(1,strB.size()-1);
}
lena=strA.length();
lenb=strB.length();
for(i=lena-1,j=1,k=1;i>=0;i--)
{
if(k==10000)
{
a[j++]=temp;
temp=0;
k=1;
}
temp+=(strA[i]-'0')*k;
k=k*10;
}
if(temp) a[j]=temp,temp=0;
else j--;
a[0]=j;
for(i=lenb-1,j=1,k=1;i>=0;i--)
{
if(k==10000)
{
b[j++]=temp;
temp=0;
k=1;
}
temp+=(strB[i]-'0')*k;
k*=10;
}
if(temp) b[j]=temp,temp=0;
else j--;
b[0]=j;
gjCheng(a,b,c);
for(i=c[0];i>=1;i--)
{
if(i==c[0]) printf("%d",c[i]);
else printf("%04d",c[i]);
}
}
void gjCheng(int a[] ,int b[] ,int c[]) { int i,j,x=0;
if(!a[0]||!b[0]) {c[0]=1,c[1]=0;return;}
for(i=1;i<=a[0];i++)
{
x=0;
for(j=1;j<=b[0];j++)
{
c[i+j-1]=a[i]*b[j]+c[i+j-1]+x;
x=c[i+j-1]/10000;
c[i+j-1]%=10000;
}
if(x) c[i+j-1]=x;
}
c[0]=i+j-3;
if(x) c[i+j-2]=x,c[0]++;
}
by Viston @ 2018-09-11 16:13:46
a=(int(input()))
b=(int(input()))
print(a*b)
by yu2001feng @ 2018-09-13 15:16:57
@Viston 咱用的不是同一种语言
by pjykk @ 2018-11-14 20:03:07
希望更丰富的展现?使用Markdown