#include<stdio.h>
#include<string.h>
#define maxsize 500
char s1[maxsize],s2[maxsize];
int p1[maxsize],p2[maxsize],res[maxsize*2]={0};
int flag=1,len1,len2,i,j,len;
void _sf()
{
scanf("%s",s1);
scanf("%s",s2);
}
void _init()
{
len1=strlen(s1);
len2=strlen(s2);
if(s1[0]=='-')
{
flag=0-flag;
for(i=1;i<len1;i++)
p1[i]=(int)(s1[len1-i])-(int)'0';
len1--;
}
else
{
for(i=1;i<=len1;i++)
p1[i]=(int)(s1[len1-i])-(int)'0';
}
if(s2[0]=='-')
{
flag=0-flag;
for(i=1;i<len2;i++)
p2[i]=(int)(s2[len2-i])-(int)'0';
len2--;
}
else
{
for(i=1;i<=len2;i++)
p2[i]=(int)(s2[len2-i])-(int)'0';
}
}
void _solve1()
{
for(i=1;i<=len1;i++)
{
for(j=1;j<=len2;j++)
{
res[i+j-1]+=p1[i]*p2[j];
res[i+j]+=res[i+j-1]/10;
res[i+j-1]%=10;
}
}
len=len1+len2;
while(len>1&&res[len]==0)
len--;
}
void _pf()
{
if(flag<0&&res[len]!=0)
printf("-");
for(i=len;i>=1;i--)
printf("%d",res[i]);
}
int main()
{
_sf();//输入
_init();//转换为整型数组,标记正负
_solve1();//两数相乘
_pf();//输出
}
【高精度 乘】
最新推荐文章于 2023-03-02 17:04:00 发布