hdu 1753 大明A+B 大数加减

来源:互联网 发布:网络课程的优点 编辑:程序博客网 时间:2024/06/10 07:13
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;char a[404],b[404];int c1[404],d1[404],c2[404],d2[404],c[404],d[404];int main(){    while(cin>>a>>b)    {        int i,j,k,n,m,p1,p2,q1,q2,p,q;        n=strlen(a);        m=strlen(b);        for(i=0;i<=400;i++)            c1[i]=c2[i]=d1[i]=d2[i]=0;        for(i=0;i<n;i++)        if(a[i]=='.')            break;        if(i<n)        {            for(j=i-1,p1=0;j>=0;j--,p1++)                c1[p1]=a[j]-'0';            for(j=i+1,q1=0;j<n;j++,q1++)                d1[q1]=a[j]-'0';        }        else        {            q1=0;            for(i=n-1,p1=0;i>=0;i--,p1++)                c1[p1]=a[i]-'0';        }        //第二个数        for(i=0;i<m;i++)        if(b[i]=='.')            break;        if(i<m)        {            for(j=i-1,p2=0;j>=0;j--,p2++)                c2[p2]=b[j]-'0';            for(j=i+1,q2=0;j<m;j++,q2++)                d2[q2]=b[j]-'0';        }        else        {            q2=0;            for(i=m-1,p2=0;i>=0;i--,p2++)                c2[p2]=b[i]-'0';        }        //小数部分        int temp=0,t;        q=max(q1,q2);        for(i=0;i<q;i++)            d[i]=d1[i]+d2[i];        temp=0;        for(i=q-1;i>=0;i--)        {            t=temp+d[i];            d[i]=t%10;            temp=t/10;        }        while(q>=1&&d[q-1]==0)        q--;        //整数部分        p=max(p1,p2);        for(i=0;i<p;i++)           c[i]=c1[i]+c2[i];        for(i=0;i<p;i++)        {            t=temp+c[i];            c[i]=t%10;            temp=t/10;        }        while(temp)        {            c[p++]=temp%10;            temp=temp/10;        }        //输出结果        if(p==1&&c[0]==0)        {            cout<<".";            for(i=0;i<q;i++)                cout<<d[i];            cout<<endl;        }        else        {            for(i=p-1;i>=0;i--)                cout<<c[i];            if(q!=0)            {                cout<<".";                for(i=0;i<q;i++)                    cout<<d[i];            }            cout<<endl;        }    }    return 0;}

原创粉丝点击