挺懒的,简单说一下思路。
首先,用字符数组输入字符串
再用ASCLL表的方式转换成数字数组。
然后再通过一种“异常”简单的方式各位相乘
再然后,因为进位的情况是会1~81的,所以光靠大于小于设置len是不行的,所以直接干脆一同加起来
然后考虑到各位相乘的问题,再处理进位
然后去除掉多余的0(可能有些学校的要求不一样,就比如说我们学校)
再然后输出
搞定,水文章
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char a[405],b[405];
int s[10000],s1[405],s2[405];
int i,ans,ans1,len,t,sum;
int main()
{
scanf("%s",a+1);
ans=strlen(a+1);
for (i=1;i<=ans;i++) s1[i]=a[ans-i+1]-48;
scanf("%s",b+1);
ans1=strlen(b+1);
for (i=1;i<=ans1;i++) s2[i]=b[ans1-i+1]-48;
for (i=1;i<=ans;i++)
{
for (int j=1;j<=ans1;j++)
{
s[j+i-1]+=s1[i]*s2[j];
}
}
len=ans+ans1;
for (i=1;i<=len;i++)
{
t=s[i]/10;
s[i+1]+=t;
s[i]%=10;
if (i==len && t>0)
{
len++;
}
}
while (s[len]==0 && len>1)
{
len--;
}
for (int i=len;i>=1;i--)
{
printf("%d",s[i]);
}
return 0;
}