大整数乘法


Description
在一些应用中,特别是现在的密码学中,常常需要用超过100位的整数来做乘法,以此来对数据加密。 现在有两个小于等于100位的大整数a和b(位数相同),请写程序计算出这两个大整数乘积的结果。
Input输入有三行 第一行是大整数位数 第一个大整数 第二个大整数
Output两个大整数的结果

Sample Input

10
1111111111
1111111111

Sample Output

1234567900987654321



#include<stdio.h>
#include<string.h>
void main()
{
int i,j,k,i1,m,i2,n,a[205]={0};
long b,c,d;
char s1[100],s2[100];
scanf("%d",&m);
scanf("%s",s1);
scanf("%s",s2);
d=0;
for(i1=0,k=m-1;i1<m;i1++,k--)
{
for(i2=0,j=m-1;i2<m;i2++,j--)
{
i=i1+i2;
b=a[i]+(s1[k]-48)*(s2[j]-48)+d;
a[i]=b%10;
d=b/10;
}
while(d>0)
{
i++;
a[i]=a[i]+d%10;
d=d/10;
}
n=i;
}
for(i=n;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}

posted @ 2013-06-23 22:01  失眠的娃儿  阅读(212)  评论(0编辑  收藏  举报