HDU 1753 大明A+B
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
Input
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
Output
Sample Input
Sample Output
一个简单的大数加法问题,定义四个数组,分别存储两个数的整数和小数部分,我是先计算的小数部分,因为小数部分可能会对整数部分产生进位。小数部分直接按顺序存储,整数倒过来存储,举个例子: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相关推荐
- Hdu 1753 大明A+B 高精度小数相加
题意: 很长很长的小数相加.. 思路: 用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加.. 然后输出除去前导0和后面0的.. Tips: ※ strchr(cha ...
- HDU - 1753 - 大明A+B
题目链接 点此跳转 代码 #include <cstdio> #include <cstdlib> #include <cstring> #include < ...
- hdu 1753大小数相加
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1753 最简小数是小于 1 的数的整数部分需要去掉? import java.math.BigIntege ...
- BigNums 之 hdu 1753
WA了几次,考虑不是很周全啊.... // [4/7/2014 Sjm] /* 推荐测试用例: 1 99999 注意: 1) 小数点左面部分 倒序 存储进数组 2) 小数点右边部分 正序 存储进数组 ...
- Java Java Java
学下java 的大数该怎么用>< hdu 1023 Train Problem II 求 卡特兰 数 诶...不记得卡特兰数的我眼泪掉下来 第一次用 java 大数 有点激动...> ...
- 杭电OJ分类题目(1)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...
- HDOJ 1753 明朝A+B
http://acm.hdu.edu.cn/showproblem.php? pid=1753 大明A+B Time Limit: 3000/1000 MS (Java/Others) M ...
- ACM的java 傻瓜式教学
关于eclipse的配置 我感觉我讲不清[逃 开始 从配好之后讲起 文件名命名为Main.java[接下来几行解释为什么要起这个名字 注意第七行那里(为了方便复制我没有加行号)的类的名字必须与文件名相 ...
- ACM Weekly 2
ACM Weekly 2 涉及的知识点 常见数据类型范围 复杂度估算运行时间 Java的BigInteger 运算相关 万进制 字符串模拟进位 _int128 几何 记忆化 难题解析 拓展的知识点 参 ...
最新文章
- 用JS脚本进行页面元素控制
- ICML论文|这违反直觉的“升噪”方法,反而能很好的解决激活函数梯度弥散的问题
- 【Selenium】导出成py脚本的基础使用
- python世界第一语言_Java 跌落神坛!Python 正式登顶世界第一编程语言
- iOS中有两种支持机制:Notification和KVO(Key-Value Observing)
- 盛金公式解一元三次方程_【国际数学竞赛】高次方程求根
- 冻结和只读取当前对象的属性,不读取对象原型的属性
- java 字符界面 curses_[C++]Linux之图形界面编程库[curses库]之入门教程
- 测试思想-测试总结 缺陷分析与统计浅析
- Item 16: Avoid Creating Unnecessary Objects(Effective C#)
- Python: ModuleNotFoundError解决方案
- android开发下载文件损坏解决方法,Android中已下载的.apk文件已损坏
- lol进服务器时文件损坏,英雄联盟文件损坏怎么修复2018 | 手游网游页游攻略大全...
- androidx中app.startup组件官方指南
- PoE供电六大常见问题大全解析
- 内存分为几个部分?堆与栈的区别
- 数据库中视图与表的区别以及如何创建视图、创建表
- Jmeter - webSocket 压力测试笔记
- 186、商城业务-检索服务-页面分页数据渲染
- 士兵队列训练问题(队列+超详细解析)