未完待续
主函数
char str1[1010],str2[1010];
int v1[1010],v2[1010],v3[1020000];
int main()
{
while(~scanf("%s %s",&str1,&str2))
{
int j,i;
int len1=strlen(str1),len2=strlen(str2);
for(i=len1-1,j=0;i>=0;i--)
v1[i]=str1[j++]-'0';
for(i=len2-1,j=0;i>=0;i--)
v2[i]=str2[j++]-'0';
mul(len1,len2);
memset(v1,0,sizeof(v1));
memset(v2,0,sizeof(v2));
memset(v3,0,sizeof(v3));
}
return 0;
}
加
void add(int len1,int len2)
{
int i,range=len1;
if(len2>range)range=len2;
for(i=0;i<range;i++)
{
v2[i]=v1[i]+v2[i];
if(v2[i]>9&&(v2[i]-=10)>-1)
v2[i+1]++;
}
for(i=range;i>=0;i--)
if(v2[i]!=0)break;
if(i==-1)printf("0");
for(i;i>=0;i--)
printf("%d",v2[i]);
printf("\n");
}
减
void sub(int len1,int len2)
{
int i,flag=0,range=len1;
if(len2>range)range=len2;
if(len2>len1)flag=1;
if(len2==len1)
{
for(i=len2-1;i>=0;i--)
{
if(v1[i]<v2[i])
flag=1;
}
}
if(flag==0)
for(i=0;i<len1;i++)
v2[i]=v1[i]-v2[i];
else
{
printf("-");
for(i=0;i<len2;i++)
v2[i]=v2[i]-v1[i];
}
for(i=0;i<range;i++)
if(v2[i]<0)
{
v2[i]+=10;
v2[i+1]--;
}
for(i=range;i>=0;i--)
if(v2[i]!=0)break;
if(i==-1)printf("0");
for(i;i>=0;i--)
printf("%d",v2[i]);
printf("\n");
}
乘
void mul(int len1,int len2)
{
int i,j;
for(i=0;i<len1;i++)
{
for(j=0;j<len2;j++)
{
v3[i+j]+=v1[i]*v2[j];
}
}
for(i=0;i<len1+len2;i++)
{
if(v3[i]>9)
{
v3[i+1]+=v3[i]/10;
v3[i]%=10;
}
}
for(i=len1+len2;i>=0;i--)
if(v3[i]!=0)break;
if(i==-1)printf("0");
for(;i>=0;i--)
printf("%d",v3[i]);
printf("\n");
}
除