大明A+B

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7545    Accepted Submission(s): 2662

Problem Description
话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。

现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。

Input
本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
Output
请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。
Sample Input
1.1 2.9
1.1111111111 2.3444323343
1 1.1

Sample Output
4
3.4555434454
2.1

Author
linle
Source
2007省赛集训队练习赛(6)_linle专场
代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #define maxn 405
 5 char sa[maxn],sb[maxn];
 6 struct node
 7 {
 8   int NN[405],point[405];
 9   int pos,nlen;
10   void init()
11   {
12     memset(NN,0,sizeof(NN));
13     memset(point,0,sizeof(point));
14   }
15 };
16 node aa,bb;
17 void cal(char *str,node *p)   //将大小数分解
18 {
19     int i,k,j=0,temp;
20       p->pos=strlen(str)-1;
21   for(i=0;str[i]!='.'&&i<=p->pos;i++)
22       p->NN[j++]=str[i]-'0';
23   for(k=i-1,j=0;k>j;k--,j++){
24       temp=p->NN[k];
25       p->NN[k]=p->NN[j];
26       p->NN[j]=temp;
27   }
28   if(i<=p->pos)   p->nlen=i++;     //NN长度点位置
29    else  p->nlen=p->pos;
30        p->pos-=p->nlen ;           //小数位数
31     for(j=0;i<strlen(str);i++)
32        p->point[j++]=str[i]-'0';   //不进行逆序
33 }
34 void work(node sa ,node sb){
35   int i,j,cc,maxc,minc,p_len=0;
36    if(sa.pos>sb.pos){
37        minc=sb.pos;
38        maxc=sa.pos;
39    }
40    else{
41        minc=sa.pos;
42        maxc=sb.pos;
43    }
44      cc=0;
45      p_len=maxc-1;
46       for(i=maxc-1;i>=0;i--){
47        sa.point[i]+=sb.point[i]+cc;
48        cc= sa.point[i]/10;
49        sa.point[i]%=10;
50       }
51    if(sa.nlen>sb.nlen){
52       maxc=sa.nlen;
53       minc=sb.nlen;
54     }
55     else{
56       maxc=sb.nlen;
57       minc=sa.nlen;
58     }
59    //判断小数点是否进
60    maxc++;
61    for(i=0,j=0;j<=maxc;j++){
62       sa.NN[j]+=sb.NN[i++]+cc ;
63       cc=sa.NN[j]/10 ;
64       sa.NN[j]%=10 ;
65    }
66    while(maxc>0&&sa.NN[maxc]==0) maxc--;
67    while(maxc>=0)
68      printf("%d",sa.NN[maxc--]);
69      i=0;
70      while(sa.point[p_len]==0) p_len--;
71    if(i<=p_len) printf(".");
72    for(j=i;j<=p_len;j++)
73     printf("%d",sa.point[j]);
74     printf("\n");
75 }
76 int main()
77 {
78     while(scanf("%s%s",sa,sb)!=EOF)
79     {
80       aa.init();
81       bb.init();
82       cal(sa,&aa);
83       cal(sb,&bb);
84       work(aa,bb);
85     }
86   return 0;
87 }

View Code

转载于:https://www.cnblogs.com/gongxijun/p/3690743.html

HDUOJ-------1753大明A+B(大数之小数加法)相关推荐

  1. java小数强制转换,Java中的强制类型转换 大数转小数

    首先要明确一下转换规则:大数转小数,多出的高位部分会被截断.比如 int 占 4个byte(32 bit), byte占 1个byte(8bit), 那int 转 byte ,int 高位多出的那24 ...

  2. Kahan's Summation Formula原理—它是如何处理大数吃小数的

    Kahan's Summation Formula原理-它是如何避免大数吃小数的 Kahan求和公式原理: 首先,这个算法就是用来求和的,求a1+a2+a3+...为什么不直接相加呢,而要用Kahan ...

  3. 例 9.14 声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。

    C++程序设计(第三版) 谭浩强 例9.14 个人设计 例 9.14 声明一个类模板,利用它分别实现两个整数.浮点数和字符的比较,求出大数和小数. 代码块: 在类模板内部定义成员函数 #include ...

  4. 《tzoj5024》大数除以小数

    <tzoj5024>大数除以小数>第一次写博客,拿来记录下oj上写的代码,方便以后能回忆.描述本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商 数Q ...

  5. stm32 整数加法循环时间_【教学设计】小数加法教学设计

    小数加法教学设计 刘秀锦 舞钢市特殊教育学校 教材分析 本节课是第四单元"小数加减法"的第一课时,小数加减法是以整数加减法为基础进行教学的,本节课走踏实了,后边的知识才能顺利的进行 ...

  6. Hdu 1753 大明A+B 高精度小数相加

    题意: 很长很长的小数相加.. 思路: 用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加.. 然后输出除去前导0和后面0的.. Tips: ※ strchr(cha ...

  7. HDU 1753 大明A+B

    大明A+B Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  8. MS SQL Server2008大数、小数转varchar

    HTJE在表中的字段类型为float(53) 试了下str, cast和convert,发现对于小数或大数,多少都存在一些问题,最后经过尝试终于找到一种满意的答案: select cast(HTJE ...

  9. JavaScript 进制之间的转换、大数或小数精度丢失、js不同进制的表示(分享)

    文章目录 1. toString(radix) 2. parseInt(string, radix) 3. 0.1 + 0.2 !=== 0.3 4. BigInt() 5. js不同进制的表示 1. ...

  10. HDU1753—大明A+B(大正小数相加)

    大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

最新文章

  1. 2019北京智源大会全部议题完整公开
  2. 【干货】不同场景下 如何进行MySQL迁移
  3. SEAM学习(一)-----安装运行example
  4. JAVA循环与分支语句edu_Java分支结构和循环结构原理与用法详解
  5. Android 驱动(3)---Android驱动开发知识储备
  6. python类中self关键字用法
  7. Axure智慧、智能乡镇通数字管理服务平台+基础数据管理+招商后台管理+web端高保真管理后台
  8. 线性规划单纯型法(bzoj 3112: [Zjoi2013]防守战线)
  9. Chrome 谷歌浏览器安装Axure插件
  10. 有道惠惠购物助手和如意淘使用比较
  11. Google安装鼠标手势插件方法
  12. java bitset clean方法_BitSet实现原理及源码解析
  13. fid和is_【深度学习】生成式对抗网络(GAN)的常见评价指标:IS/FID/JS散度
  14. 云服务器功能检验方法
  15. 计算机网络复习(部分)
  16. 一位IT行业高收入者的理财规划方案
  17. 2021-02-07 - GraphQL - 学习/实践
  18. vue实现页面刷新以及局部刷新的方法
  19. 数据结构 -- 魔王语言解释
  20. ripro9.0修正升级版,无加密无后门,无需扩展,最新资源

热门文章

  1. poj 3422 (费用流)
  2. 5016.网络安全__防火墙应用案例和双机HA部署案例
  3. iOS 本地推送以及自定义推送声音
  4. 又丢脸了,“要源码上门自取”,结果美女真上门了!国内企业再惹争议
  5. 最新!2020中国高校毕业生薪资排行出炉!好过双一流的高校原来这么多
  6. 太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
  7. Facebook提高工作效率的秘密 ,值得收藏
  8. 你不专业并且自以为是,所以被坑
  9. GitHub出现大量重复代码:JavaScript最严重
  10. hao123谢幕,那是80后青春的记忆