1. 程式人生 > >【高精度演算法】A-B(答案可負)

【高精度演算法】A-B(答案可負)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
char s1[10010],s2[10010],s3[10010];
int a[10010],b[10010],c[10010];
int main(){
    int i,j,k,m,n,alen,blen,clen;
    gets(s1);
    alen=strlen(s1);
    gets(s2);
    blen=strlen(s2);
    if(alen<blen ||(alen==blen && strcmp(s1,s2)<0)){
        printf("-");strcpy(s3,s1);strcpy(s1,s2);strcpy(s2,s3);             
    }
    alen=strlen(s1);
    blen=strlen(s2);
    for(i=0;i<alen;i++)
        a[i+1]=s1[alen-i-1]-'0';
    for(i=0;i<blen;i++)
        b[i+1]=s2[blen-i-1]-'0';
    for(i=1;i<=alen;i++)
        c[i]=a[i]-b[i];
    clen=alen;
    for(i=1;i<=clen;i++){
        if(c[i]<0){
            c[i+1]--;
            c[i]+=10;             
        }                    
    }
    while(c[clen]==0 && clen>1)clen--;
    for(i=clen;i>=1;i--)
        printf("%d",c[i]);
    puts("");
    return 0;    
}