leo666 @ 2017-08-24 19:59:17
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=2000+1000;
char s1[maxn],s2[maxn];
int a[maxn],b[maxn],c[maxn*maxn];
int main()
{
scanf("%s%s",s1,s2);
int lena=strlen(s1),lenb=strlen(s2);
for(int i=0;i<lena;i++) a[i]=s1[lena-i-1]-'0';
for(int i=0;i<lenb;i++) b[i]=s2[lenb-i-1]-'0';
for(int i=0;i<lena;i++)
for(int j=0;j<lenb;j++) {
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
int lenc=lena+lenb;
while(lenc>1&&c[lenc-1]==0) lenc--;
for(int i=lenc-1;i>=0;i--) printf("%d",c[i]);
return 0;
}
by 起名真的很难 @ 2017-08-24 20:27:17
你要发你去题解里发好伐?听说灰名越来越跳了?
by moye到碗里来 @ 2017-08-24 20:38:00
真的是越来越跳
by Pisces @ 2017-10-02 14:45:37
社会版
#include<bits/stdc++.h>
using namespace std;
char a[10000],b[10000];
int c[10000],d[10000],e[10000];
int main()
{
int j,i,s,la,lb,k,i1=0,j1=0;
scanf("%s",a);
scanf("%s",b);
if(a[0]=='0'||b[0]=='0') cout<<0;
else
{
la=strlen(a);lb=strlen(b);
for(i1=la/4+bool(la%4)-1,i=la-1;i1>=0;i-=4,i1--)c[la/4+bool(la%4)-i1]=(a[i]-'0')*bool(a[i])+(a[i-1]-'0')*10*bool(a[i-1])+(a[i-2]-'0')*100*bool(a[i-2])+(a[i-3]-'0')*1000*bool(a[i-3]);
for(j1=lb/4+bool(lb%4)-1,j=lb-1;j1>=0;j-=4,j1--)d[lb/4+bool(lb%4)-j1]=(b[j]-'0')*bool(b[j])+(b[j-1]-'0')*10*bool(b[j-1])+(b[j-2]-'0')*100*bool(b[j-2])+(b[j-3]-'0')*1000*bool(b[j-3]);
for(j=1;j<=lb/4+bool(lb%4);j++)
{
for(i=1;i<=la/4+bool(la%4);i++)
{
s=c[i]*d[j];k=s/10000;s=s%10000;
e[i+j-1]+=s;e[i+j]+=k;
}
}
for(i=1;i<=la/4+bool(la%4)+lb/4+bool(lb%4);i++)
{
if(e[i]>=10000)
{
e[i+1]+=(e[i]/10000);
e[i]%=10000;
}
}
if(e[la/4+bool(la%4)+lb/4+bool(lb%4)]!=0||la/4+bool(la%4)+lb/4+bool(lb%4)==1)
{
printf("%d",e[la/4+bool(la%4)+lb/4+bool(lb%4)]);
for(j=la/4+bool(la%4)+lb/4+bool(lb%4)-1;j>=1;j--)printf("%04d",e[j]);
}
else if(e[la/4+bool(la%4)+lb/4+bool(lb%4)-1]!=0||la/4+bool(la%4)+lb/4+bool(lb%4)-1==1)
{
printf("%d",e[la/4+bool(la%4)+lb/4+bool(lb%4)-1]);
for(j=la/4+bool(la%4)+lb/4+bool(lb%4)-2;j>=1;j--)printf("%04d",e[j]);
}
}
return 0;
}