大明A+B

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status

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

一个简单的大数加法问题,定义四个数组,分别存储两个数的整数和小数部分,我是先计算的小数部分,因为小数部分可能会对整数部分产生进位。小数部分直接按顺序存储,整数倒过来存储,举个例子:789.987     321.123,第一个数的小数部分直接按 987存进去,整数部分就是 倒过来存,即987,我只是感觉这样存储会比较好计算,当然怎么存都能计算出来,根据个人喜好吧。其中有一点需要注意,就是小数点是否要输出,输出的话在哪里输出,这个一定要控制好。

#include<stdio.h>
#include<string.h>
int main()
{int a[500],b[500],c[500],d[500];char  str1[500],str2[500];int i,j,n,l1,l2,k;while(scanf("%s%s",str1,str2)!=EOF){memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(d,0,sizeof(d));l1=strlen(str1);l2=strlen(str2);int f=0;for(i=0; i<l1; i++){if(str1[i]=='.')break;}if(i<l1)//有小数点,标记一下f=1;k=0;for(j=i+1; j<l1; j++)//小数部分存进数组a.{a[k++]=str1[j]-'0';}k=0;for(j=i-1; j>=0; j--)//整数部分存进数组b.{b[k++]=str1[j]-'0';}for(i=0; i<l2; i++){if(str2[i]=='.')break;}if(i<l2)//有小数点,标记.f=1;k=0;for(j=i+1; j<l2; j++)//小数部分存进数组c.{c[k++]=str2[j]-'0';}k=0;for(j=i-1; j>=0; j--)//整数部分存进数组d.{d[k++]=str2[j]-'0';}for(i=401; i>=0; i--)//小数想加{a[i]+=c[i];if(i!=0&&a[i]>=10)//这一位对下一位的进位.{a[i]=a[i]-10;a[i-1]++;}if(i==0&&a[i]>=10)//小数对整数部分的进位.{a[i]=a[i]-10;b[0]++;}}for(i=0; i<401; i++){b[i]+=d[i];if(b[i]>=10){b[i]=b[i]%10;b[i+1]++;}}k=0;for(i=401; i>=0; i--)//去掉开头的0{if(b[i]!=0)k=1;if(k==1)printf("%d",b[i]);}if(k==0)//没有整数部分.printf("0");if(f==1)//有小数部分.{for(i=401; i>=0; i--)if(a[i]!=0)break;if(i>=0){printf(".");for(j=0; j<=i; j++)printf("%d",a[j]);}}printf("\n");}return 0;
}

HDU 1753 大明A+B相关推荐

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

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

  2. HDU - 1753 - 大明A+B

    题目链接 点此跳转 代码 #include <cstdio> #include <cstdlib> #include <cstring> #include < ...

  3. hdu 1753大小数相加

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1753 最简小数是小于 1 的数的整数部分需要去掉? import java.math.BigIntege ...

  4. BigNums 之 hdu 1753

    WA了几次,考虑不是很周全啊.... // [4/7/2014 Sjm] /* 推荐测试用例: 1 99999 注意: 1) 小数点左面部分 倒序 存储进数组 2) 小数点右边部分 正序 存储进数组 ...

  5. Java Java Java

    学下java 的大数该怎么用>< hdu 1023 Train Problem II 求 卡特兰 数 诶...不记得卡特兰数的我眼泪掉下来 第一次用 java 大数 有点激动...> ...

  6. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  7. HDOJ 1753 明朝A+B

     http://acm.hdu.edu.cn/showproblem.php? pid=1753 大明A+B Time Limit: 3000/1000 MS (Java/Others)    M ...

  8. ACM的java 傻瓜式教学

    关于eclipse的配置 我感觉我讲不清[逃 开始 从配好之后讲起 文件名命名为Main.java[接下来几行解释为什么要起这个名字 注意第七行那里(为了方便复制我没有加行号)的类的名字必须与文件名相 ...

  9. ACM Weekly 2

    ACM Weekly 2 涉及的知识点 常见数据类型范围 复杂度估算运行时间 Java的BigInteger 运算相关 万进制 字符串模拟进位 _int128 几何 记忆化 难题解析 拓展的知识点 参 ...

最新文章

  1. 用JS脚本进行页面元素控制
  2. ICML论文|这违反直觉的“升噪”方法,反而能很好的解决激活函数梯度弥散的问题
  3. 【Selenium】导出成py脚本的基础使用
  4. python世界第一语言_Java 跌落神坛!Python 正式登顶世界第一编程语言
  5. iOS中有两种支持机制:Notification和KVO(Key-Value Observing)
  6. 盛金公式解一元三次方程_【国际数学竞赛】高次方程求根
  7. 冻结和只读取当前对象的属性,不读取对象原型的属性
  8. java 字符界面 curses_[C++]Linux之图形界面编程库[curses库]之入门教程
  9. 测试思想-测试总结 缺陷分析与统计浅析
  10. Item 16: Avoid Creating Unnecessary Objects(Effective C#)
  11. Python: ModuleNotFoundError解决方案
  12. android开发下载文件损坏解决方法,Android中已下载的.apk文件已损坏
  13. lol进服务器时文件损坏,英雄联盟文件损坏怎么修复2018 | 手游网游页游攻略大全...
  14. androidx中app.startup组件官方指南
  15. PoE供电六大常见问题大全解析
  16. 内存分为几个部分?堆与栈的区别
  17. 数据库中视图与表的区别以及如何创建视图、创建表
  18. Jmeter - webSocket 压力测试笔记
  19. 186、商城业务-检索服务-页面分页数据渲染
  20. 士兵队列训练问题(队列+超详细解析)

热门文章

  1. python cx_Oracle 2
  2. HTML制作年历,js制作简易年历完整实例
  3. unbuntu install chrome
  4. 阴阳师服务器维护结界卡暂停吗,3月10日阴阳师服务器维护更新内容一览
  5. 如何让WIN7自动登录(不用登密码,也不用选择用户)
  6. 用计算机公式表白,用物理公式表白的正确方法
  7. 虾米音乐关停,QQ音乐、网易云上线虾米歌单迁移功能
  8. 字节跳动 录屏功能_屏幕录制工具分享,便捷录屏就用它
  9. android 实现屏幕录制功能
  10. python web Android屏幕录制