【codevs 3115 3116 3117】高精度练习之加/减/乘法

来源:互联网 发布:cocos2d js 粒子效果 编辑:程序博客网 时间:2024/05/07 18:32

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000+1;char a[maxn],b[maxn];int ca[maxn],cb[maxn],cc[maxn];int lena,lenb,lenc;void jia(){    cin>>a;    cin>>b;    lena=strlen(a),lenb=strlen(b);    for(int i=1;i<=lena;i++)    ca[i]=a[lena-i]-'0';    for(int i=1;i<=lenb;i++)    cb[i]=b[lenb-i]-'0';    lenc=1;    while(lenc<=lena+2||lenc<=lenb+2)    {        cc[lenc]+=ca[lenc]+cb[lenc];        cc[lenc+1]+=cc[lenc]/10;        cc[lenc]=cc[lenc]%10;        lenc++;    }    while(cc[lenc]==0&&lenc>0) lenc--;    if(lenc==0)    {        puts("0");        return;    }    for(int i=lenc;i>=1;i--)    {        printf("%d",cc[i]);    }}int main(){    jia();    return 0;}

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=10001;char a[maxn],b[maxn];int ca[maxn],cb[maxn],cc[maxn];int lena,lenb,lenc; void jian(){    cin>>a;    cin>>b;    lena=strlen(a),lenb=strlen(b);    for(int i=1;i<=lena;i++)    ca[i]=a[lena-i]-'0';    for(int i=1;i<=lenb;i++)    cb[i]=b[lenb-i]-'0';    if(lena<lenb)    {        for(int i=1;i<=lenb;i++)        {            cc[i]=ca[i];            ca[i]=cb[i];            cb[i]=cc[i];        }        memset(cc,0,sizeof(cc));        cout<<"-";    }    else if(lena==lenb)    {        for(int i=lena;i>=1;i--)        {            if(ca[i]>cb[i]) break;            else if(ca[i]==cb[i]) continue;            else            {                for(int j=i;j>=1;j--)//for(int j=1;j<=lena;j++)                {                    cc[j]=ca[j];                    ca[j]=cb[j];                    cb[j]=cc[j];                }                memset(cc,0,sizeof(cc));                cout<<"-";                break;            }        }    }    lenc=1;    while(lenc<=lena+2||lenc<=lenb+2)    {        if(ca[lenc]<cb[lenc])        {            ca[lenc]+=10;            ca[lenc+1]--;        }        cc[lenc]=ca[lenc]-cb[lenc];        lenc++;    }    while(cc[lenc]==0&&lenc>0) lenc--;    if(lenc==0)    {        puts("0");        return;    }    for(int i=lenc;i>=1;i--)    printf("%d",cc[i]);}int main(){    jian();    return 0;}

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000+1;char a[maxn],b[maxn];int ca[maxn],cb[maxn],cc[maxn];int lena,lenb,lenc;void cheng(){    cin>>a;    cin>>b;    lena=strlen(a);    lenb=strlen(b);    for(int i=1;i<=lena;i++)    ca[i]=a[lena-i]-'0';    for(int i=1;i<=lenb;i++)    cb[i]=b[lenb-i]-'0';    for(int i=1;i<=lena;i++)    for(int j=1;j<=lenb;j++)    cc[i+j]+=ca[i]*cb[j];    for(int i=1;i<=lena+lenb+2;i++)    {        if(cc[i]>=10)        {            cc[i+1]+=cc[i]/10;            cc[i]%=10;        }        else continue;    }    lenc=lena+lenb+4;    while(cc[lenc]==0&&lenc>0) lenc--;    if(lenc==0) puts("0");    for(int i=lenc;i>=2;i--)    printf("%d",cc[i]);    return;}int main(){    cheng();    return 0;}
原创粉丝点击