大整数加法
大整数减法
大整数乘法
的总结在这里了
+:进位
-:借位
*:进位
高精度*单精度 2^n
now = 2^k (高精度)
*2 (单精度)
把now的每一个数位 *对应单精度的数
进位
考虑最高位有没有变化
高精度*高精度
每次
a的第i位 * b的第j位,为什么结果是计算给第(i+j-1)位
ai*10^(i-1)
bj*10^(j-1)
ai * bj * 10^(i+j-2)
对第(i+j-1)位有 ai*bj的贡献
代码
#include <stdio.h>
#include <string.h>
#define N 2010
char s1[N],s2[N];
int a[N],b[N],c[N];
int max(int x,int y)
{
return x > y ? x : y;
}
int main()
{
int len,len1,len2,i,jw;
scanf("%s %s",s1,s2);
len1=strlen(s1);
for(i=0;i<len1;i++)
a[i]=s1[len1-i-1]-'0';
len2=strlen(s2);
for(i=0;i<len2;i++)
b[i]=s2[len2-i-1]-'0';
len=max(len1,len2)+1;
jw=0;
for(i=0;i<len;i++)
{
c[i]=a[i]+b[i]+jw;
jw=c[i]/10;
c[i]=c[i]%10;
}
for(i=len-1;i>=0;i--)
{
if(c[i]==0 && len>1)
len--;
else
break;
}
for(i=len-1;i>=0;i--)
printf("%d",c[i]);
printf("\n");
return 0;
}