数据结构与算法MOOC / 第2周 线性表(Linear Lists3:大整数乘法

来源:互联网 发布:sql删除数据库表数据 编辑:程序博客网 时间:2024/06/04 17:59

3:大整数乘法

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述

求两个不超过200位的非负整数的积。

输入
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
1234567890098765432100
样例输出
1219326311126352690000
提示
30%的数据,输入的两个整数不超过8位。
#include<stdio.h>
#include<string.h>
#define max 3000
int main()
{
char a[max],b[max];
int s[max],c[max];
int i,j,l1,l2;
while(~scanf("%s%s",a,b))
{
l1=strlen(a);
l2=strlen(b);
for(i=0;i<l1+l2;i++)
s[i]=0;
for(i=0;i<l1;i++)
{
for(j=0;j<l2;j++)
{
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
}
}
for(i=l1+l2-1;i>=0;i--)
{
if(s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]=s[i]%10;


}
}
int w=0;
while(s[w]==0)
{
w++;
}
for(;w<l1+l2;w++)
{
printf("%d",s[w]);
}
printf("\n");
}
return 0;
}




0 0
原创粉丝点击