• hdu1753(a+b)


    http://acm.hdu.edu.cn/showproblem.php?pid=1753

    有时间优化一下,写的好长啊!

    View Code
    #include"iostream"
    using namespace std;
    int main()
    {
    char a[1001],b[1001];
    int c[1001] , d[1001];
    int e[1001];
    int i,j;
    while(cin>>a>>b)
    {
    int L1=strlen(a);
    int L2=strlen(b);

    int start_a=L1-1,start_b=L2-1;

    for(i=L1-1;i>=0;i--) if(a[i]!='0') { start_a=i; break; } //去除末尾0
    for(i=L2-1;i>=0;i--) if(b[i]!='0') { start_b=i; break; }

    int s=0,t=0 , _max;

    int marka=start_a,markb=start_b;

    for( i=0 ; i<=start_a ; ++i )
    {
    if(a[i]=='.') { marka=i; break; }
    }

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

    if(start_a-marka>start_b-markb) _max=start_a-marka;
    else _max=start_b-markb;

    if(start_a-marka>start_b-markb)
    {

    for( i=start_b+1 ; i<=start_b+start_a-marka-start_b+markb ; i++ )
    b[i]
    ='0';

    for( i=0 ; i<=start_b+start_a-marka-start_b+markb ; ++i )
    {
    if(b[i]!='.') d[t++]=b[i]-'0';
    }

    for( i=0 ; i<=start_a ; ++i )
    {
    if(a[i]!='.') c[s++]=a[i]-'0';
    }
    }
    else
    {
    for( i=start_a+1 ; i<=start_a+start_b-markb-start_a+marka ; i++)
    a[i]
    ='0';

    for(i=0; i<=start_b ; ++i)
    {
    if(b[i]!='.') d[t++]=b[i]-'0';
    }

    for( i=0 ; i<=start_a+start_b-markb-start_a+marka ; ++i )
    {
    if(a[i]!='.') c[s++]=a[i]-'0';
    }
    }

    int flag=0 ,m=0;

    if(s>t)
    {
    for(i=s-1,j=t-1;i>=s-t,j>=0;j--,i--)
    {
    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=s-1,j=t-1;i>=0,j>=t-s; j--,i--)
    {
    e[m
    ++]=(c[i] + d[j] + flag)%10;
    flag
    =(c[i] + d[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;
    }

    int mark=0,count=0;

    for(i=0;i<m;i++) if(e[i]==0) count++;
    if(count==m) cout<<"0"<<endl;
    else
    {
    for(i=0;i<=_max;i++)
    {

    if(e[i]) { mark=i ; break; }
    else if(i=_max) {mark=_max; break;}
    }

    for(i=m-1;i>=mark;i--)
    {
    cout
    <<e[i];
    if(i==_max&&i!=mark) cout<<".";
    }
    cout
    <<endl;
    }
    }
    return 0;
    }
  • 相关阅读:
    Rabbitmq 性能测试
    B+树图文详解
    图的概念和存储(邻接矩阵,邻接表)
    WebApi系列文章
    Asp.Net MVC项目集成Swagger
    正则表达式匹配两个特殊字符中间的内容
    数学常数e的含义
    十大排序算法总结
    C#集合类型大揭秘
    深入System.Web.Caching命名空间 教你Hold住缓存管理(三)
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2040571.html
Copyright © 2020-2023  润新知