题目链接:http://bailian.openjudge.cn/practice/2980
#include<stdio.h>
#include<string.h>
void xx(char a[],int x[])
{
int i,k,j;
j=k=strlen(a);
for(i=0;i<k;i++)
x[--j]=a[i]-48;
}
int main()
{
int i,w,j,k,lenx,leny,x[202],y[201],p1[402];
char a[201],b[201];
memset(p1,0,sizeof(p1));
scanf("%s%s",a,b);
xx(a,x);
xx(b,y);
lenx=strlen(a);
leny=strlen(b);
for(i=0;i<leny;i++)
{
w=i;
for(j=0;j<lenx;j++)
p1[w++]+=y[i]*x[j];
}
k=lenx+leny-1;
for(i=0;i<k;i++)
if(p1[i]>=10)
{
p1[i+1]+=p1[i]/10;
p1[i]%=10;
}
if(p1[k]!=0)
for(i=k;i>=0;i--)
printf("%d",p1[i]);
else
for(i=k-1;i>=0;i--)
printf("%d",p1[i]);
printf("\n");
return 0;
}
本文介绍了一种使用数组来实现大数乘法的方法。通过将输入字符串转换为整数数组,利用数组进行数学运算避免了传统整型数据溢出的问题。文章详细展示了如何逐位相乘并进位,最后输出结果。

2374

被折叠的 条评论
为什么被折叠?



