zoukankan      html  css  js  c++  java
  • nyoj_513_A+B Problem IV_20130131532

    A+B Problem IV

    时间限制:1000 ms  |           内存限制:65535 KB
    难度:3
     
    描述
    acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了。
     
    输入
    包含多组测试数据 每组数据包含两个正数A,B(可能为小数且位数不大于400)
    输出
    每组输出数据占一行,输出A+B的结果,结果需要是最简的形式。
    样例输入
    1.9 0.1
    0.1 0.9
    1.23 2.1
    3 4.0
    样例输出
    2
    1
    3.33
    7
    来源
    hdu

    #include <stdio.h> #include <string.h>

    #define MAX 440

    int an1[MAX],an2[MAX],an3[MAX],an4[MAX];

    char str1[MAX],str2[MAX],s[2*MAX];

    int main()

    {    

       memset(s,0,sizeof(s));

        while(gets(s))

        {         int i,j,t=0;

            int len1,len2,len;

            memset(str1,0,sizeof(str1));

            memset(str2,0,sizeof(str2));

            memset(an1,0,sizeof(an1));

            memset(an2,0,sizeof(an2));

            memset(an3,0,sizeof(an3));

            memset(an4,0,sizeof(an4));

            len=strlen(s);

            for(i=0,j=0;i<len;i++)

            {

                if(s[i]==' ')

                break;

                else

                str1[j++]=s[i];

            }

            for(i+=1,j=0;i<len;i++)

            {

                str2[j++]=s[i];

            }

            len1=strlen(str1);

            for(i=0;i<len1;i++)

            {

                if(str1[i]=='.')

                {t=i;break;}

            }

            if(i==len1)

            t=i;

            for(i+=1,j=1;i<len1;i++)

            {

                an2[j++]=str1[i]-'0';

            }

            for(i=t-1,j=0;i>=0;i--)  

           {

                an1[j++]=str1[i]-'0';

            }

            /*

            for(i=0;i<10;i++)

            {

                printf("%d",an1[i]);

            }

            for(i=0;i<10;i++)

            {

                printf("%d",an2[i]);

            }

            */

            len2=strlen(str2);

            t=0;

            for(i=0;i<len2;i++)

            {

                if(str2[i]=='.')

                {t=i;break;}

            }

            if(i==len2)

            t=i;

            for(i+=1,j=1;i<len2;i++)

            {

                an4[j++]=str2[i]-'0';

            }

            for(i=t-1,j=0;i>=0;i--)

            {

                an3[j++]=str2[i]-'0';

            }

            for(i=MAX-1;i>=0;i--)

            {

                an2[i]+=an4[i];

                if(an2[i]>=10)

                {

                    an2[i]-=10;

                    an2[i-1]++;

                }

            }

            if(an2[0]>0)

            an1[0]++;

            for(i=0;i<MAX;i++)

            {

                an1[i]+=an3[i];

                if(an1[i]>=10)

                {

                    an1[i]-=10;

                    an1[i+1]++;

                }

            }

             for(i=MAX-1;i>0&&an1[i]==0;i--);

            for(;i>=0;i--)

            printf("%d",an1[i]);

            for(i=MAX-1;i>0&&an2[i]==0;i--);

            if(i>0)

            {t=i;

            printf(".");

            for(i=1;i<=t;i++)

            printf("%d",an2[i]);

            }

            printf(" ");

        }

        return 0;

    }

  • 相关阅读:
    uap
    打印机驱动下载
    hsf
    系统安装
    npm
    webuploader传递参数
    thinkphp5集成H-ui后台(五)集成webUploader
    webUploader上传视频,包括上传进度、上传状态、暂停和取消等
    webuploader php上传视频
    使用Webuploader大文件分片传输
  • 原文地址:https://www.cnblogs.com/xl1027515989/p/3319760.html
Copyright © 2011-2022 走看看