• 暂存


    View Code
    #include"iostream"
    #include
    "iostream"
    using namespace std;

    int n;
    int mark=0;
    char a[50] , b[50];
    int c[50] , d[50];
    int f[50] , e[50];
    int La, Lb;
    int marka, markb;
    int s,t;
    int i,j;
    int _max;

    int Max(int x, int y)
    {
    return x>y?x:y;
    }
    void Add()
    {
    memset(e,
    0,sizeof(e));
    int m=0,flag=0;
    if(s>t)
    {
    for(i=s-1,j=t-1;i>=s-t,j>=0;i--,j--)
    {
    e[m
    ++]=(c[i]+d[j]+flag)%10;
    flag
    =(c[i]+d[j]+flag)/10;
    }
    for(i=s-t-1;i>=0;i--)
    {
    e[m
    ++]=(c[i]+flag)%10;
    flag
    =(c[i]+flag)/10;
    }
    }
    else
    {
    for(i=t-1,j=s-1;i>=t-s,j>=0; i--,j--)
    {
    e[m
    ++]=(d[i]+c[j]+flag)%10;
    flag
    =(d[i]+c[j]+flag)/10;
    }
    if(t>s)
    {
    for(i=t-s-1;i>=0;i--)
    {
    e[m
    ++]=(d[i]+flag)%10;
    flag
    =(d[i]+flag)/10;
    }
    }
    }
    while(flag)
    {
    e[m
    ++]=flag%10;
    flag
    /=10;
    }
    Lb
    =0;
    for(i=m-1;i>=0;i--)
    {
    b[Lb
    ++]=e[i]+48;
    if(i==_max) b[Lb++]='.';
    }
    memset(c,
    0,sizeof(c));
    memset(d,
    0,sizeof(d));

    }
    int main()
    {

    while(cin>>n)
    {
    memset(b,
    '0',sizeof(b));
    Lb
    =0;
    while(n--)
    {
    s
    =0,t=0;
    cin
    >>a;
    La
    =strlen(a);
    marka
    =La-1;
    markb
    =Lb-1;
    for(i=0;i<La;i++) if(a[i]!='.') c[s++]=a[i]-'0';
    for(i=0;i<La;i++)
    if(a[i]=='.') { marka=i; break;}
    for(i=0;i<Lb;i++) if(b[i]!='.') d[t++]=b[i]-'0';

    for(i=0; i<Lb; i++)
    if(b[i]=='.') { markb=i; break;}

    _max
    =Max(La-marka-1 , Lb-markb-1);

    if(La-marka-1>Lb-markb-1)
    {
    for(i=Lb ; i<Lb+(La-marka-Lb+markb); i++)
    d[t
    ++]=0;
    }
    else
    {
    for(i=La ; i<La+(Lb-markb-La+marka); i++)
    c[s
    ++]=0;
    }
    Add();
    }
    int sign=Lb;

    int LL=strlen(b);
    int g=0;
    for( i=0 ; i<Lb ; i++ ) if(b[i]=='.') sign=i;
    for(i=0;i<sign;i++)
    f[g
    ++]=b[i]-'0';
    for(i=sign+1; i<=sign+16; i++) f[g++]=b[i]-'0';
    int flag=0,k=0;
    for(i=g-2;i>=0;i--)
    {
    if(f[i+1]>4)
    {
    f[i]
    =(f[i]+1+flag)%10;
    flag
    =(f[i]+1+flag)/10;
    }
    else break;
    }
    if(flag) cout<<flag;
    for(i=0;i<sign;i++)
    {
    cout
    <<f[i];
    }
    cout
    <<".";
    for(i=sign;i<sign+12;i++)
    cout
    <<f[i];
    cout
    <<endl;
    }
    return 0;
    }
  • 相关阅读:
    寒假学习日报29
    寒假学习日报28
    保证多个线程顺序执行
    switchHost本地映射
    Redis 淘汰策略解读
    再过半小时,你就能明白kafka的工作原理了
    Zookeeper用来做什么的,有几种类型的节点
    类加载过程
    REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
    数据库的锁机制及原理
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2041292.html
Copyright © 2020-2023  润新知