具体思想:
每一位相乘后 对应项累加,再按照进位的原则更新答案数组,要注意的是的答案数组下标的更新与对应项累加息息相关,可以根据代码推一组简单地数,就应该能理解。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<vector>
#include<map>
#include<stdlib.h>
using namespace std;
typedef long long ll;
int main()
{
char s[10005],f[1005],swaps[1005];
int s1[10005],f1[10005],ans[10005],l1,l2,i,j,k;
while(cin>>s>>f)
{
memset(s1,0,sizeof(s1));
memset(f1,0,sizeof(f1));
memset(ans,0,sizeof(ans));
l1=strlen(s),l2=strlen(f);
int h=l1+l2+1;
k=0;
for(i=l1-1;i>=0;i--)
s1[k++]=s[i]-'0';
k=0;
for(j=l2-1;j>=0;j--)
f1[k++]=f[j]-'0';
for(i=0;i<l1;i++)
{
for(j=0;j<l2;j++)
{
ans[i+j]+=s1[i]*f1[j];
}
}
for(i=0;i<h;i++)
{
if(ans[i]>=10);
{
ans[i+1]+=ans[i]/10;
ans[i]%=10;
}
}
int g=h;
while(ans[g]==0)
g--;
if(g<0)
cout<<0;
else
for(;g>=0;g--)
cout<<ans[g];
cout<<endl;
}
return 0;
}