【高精度算法】A+B

来源:互联网 发布:淘宝一键复制怎么用 编辑:程序博客网 时间:2024/05/17 04:46
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>char s[10010];int a[10010],b[10010],c[10010];int x[10010],y[10010],z[10010];int main(){    int i,j,k,m,n;    int alen,blen,clen,xlen,ylen,zlen,xs;    gets(s);    alen=0;    for(i=0;i<strlen(s);i++){        if(s[i]=='.'){            xs=i+1;            break;        }        c[++alen]=s[i]-'0';    }    for(i=1;i<=alen;i++)a[i]=c[alen-i+1];    xlen=0;    for(i=1;i<strlen(s)-alen;i++)x[++xlen]=s[i+xs-1]-'0';         gets(s);    blen=0;    for(i=0;i<strlen(s);i++){        if(s[i]=='.'){            xs=i+1;            break;        }        c[++blen]=s[i]-'0';    }    for(i=1;i<=blen;i++)b[i]=c[blen-i+1];    ylen=0;    for(i=1;i<strlen(s)-blen;i++)y[++ylen]=s[i+xs-1]-'0';         zlen=xlen>ylen?xlen:ylen;    for(i=1;i<=zlen;i++){        z[i]=x[i]+y[i];    }    for(i=zlen;i>=1;i--){        if(z[i]>=10){            z[i]-=10;            z[i-1]++;        }    }         clen=alen>blen?alen:blen;    c[1]=a[1]+b[1]+z[0];    for(i=2;i<=clen;i++){        c[i]=a[i]+b[i];    }    for(i=1;i<clen;i++){        if(c[i]>=10){            c[i]-=10;            c[i+1]++;        }    }         for(i=clen;i>=1;i--)printf("%d",c[i]);    printf(".");    for(i=1;i<=20;i++)printf("%d",z[i]);    return 0;}

0 0
原创粉丝点击