OpenJudge 2738 浮点数加法
1.链接地址:
http://bailian.openjudge.cn/practice/2738
2.题目:
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 求2个浮点数相加的和
题目中输入输出中出现浮点数都有如下的形式:
P1P2...Pi.Q1Q2...Qj
对于整数部分,P1P2...Pi是一个非负整数
对于小数部分,Qj不等于0- 输入
- 第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。每组测试数据之间有一个空行,每行数据不超过100个字符
- 输出
- n行,每组测试数据有一行输出是相应的和。输出保证一定是一个小数部分不为0的浮点数
- 样例输入
2
0.111111111111111111111111111111
0.111111111111111111111111111111 10000000.655555555555555555555555555555
1.444444444444444444444444444445- 样例输出
0.222222222222222222222222222222
10000002.1
3.思路:
利用大整数加法的基础
首先做预处理,去除小数点,小数较短的数补零
计算后做后处理,首先判断是否有进位,有则拓展一位,去除小数后面的零,添加点
4.代码:
#include <iostream>
#include <cstdio>
#include <string> using namespace std; string sum(string s1,string s2)
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
int i,j;
for(i=s1.length()-,j=s2.length()-;i>=;i--,j--)
{
s1[i]=char(s1[i]+(j>=?s2[j]-'':)); //注意细节
if(s1[i]-''>=)
{
s1[i]=char((s1[i]-'')%+'');
if(i) s1[i-]++;
else s1=''+s1;
}
}
return s1;
} string real_sum(string s1,string s2)
{
string::size_type idx_s1_point = s1.find(".");
s1.erase(idx_s1_point,); string::size_type idx_s2_point = s2.find(".");
s2.erase(idx_s2_point,); string::size_type int_res_len = idx_s1_point>idx_s2_point?idx_s1_point:idx_s2_point; string::size_type dec_s1_len = s1.size() - idx_s1_point;
string::size_type dec_s2_len = s2.size() - idx_s2_point; string::size_type dec_res_len;
if(dec_s1_len < dec_s2_len)
{
s1 += string(dec_s2_len - dec_s1_len, '');
dec_res_len = dec_s2_len;
}
else
{
s2 += string(dec_s1_len - dec_s2_len, '');
dec_res_len = dec_s1_len;
} string res = sum(s1,s2); if(res.size() > int_res_len + dec_res_len)
{
++int_res_len;
} string::size_type idx_res_tail = res.find_last_not_of(""); res = res.substr(,idx_res_tail + );
res.insert(int_res_len,"."); return res;
} int main()
{ int n;
cin>>n; string s1,s2;
while(n--)
{
cin>>s1>>s2;
cout<<real_sum(s1,s2)<<endl;
} return ;
}
OpenJudge 2738 浮点数加法的更多相关文章
- 【九度OJ】题目1137:浮点数加法 解题报告
		[九度OJ]题目1137:浮点数加法 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的 ... 
- OpenJudge 2792 集合加法
		1.链接地址: http://bailian.openjudge.cn/practice/2792 2.题目: 总Time Limit: 3000ms Memory Limit: 65536kB De ... 
- [九度OJ]1137.浮点数加法
		原题链接:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的和题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2... ... 
- 九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。
		题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj 对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: ... 
- 九度OJ 1137:浮点数加法 (大数运算)
		时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2725 解决:736 题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj ... 
- 九度oj 题目1137:浮点数加法
		题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2...Qj对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: 对 ... 
- OpenJudge 4152 最佳加法表达式
		总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放 ... 
- JS/PHP 浮点数精确运算
		php浮点数精确运算 bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_oper ... 
- JS里浮点数的运算
		//浮点数加法运算 function FloatAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1]. ... 
随机推荐
- JavaScript要点(八) 闭包
			JavaScript 变量可以是局部变量或全局变量. 私有变量可以用到闭包. 全局变量 函数可以访问由函数内部定义的变量,如: function myFunction() { var a = 4; r ... 
- 【23】宁以non-member、non-friend替换member函数
			1.non-member方法与member方法没有本质区别,对于编译器来说,都是non-member方法,因为member方法绑定的对象,会被编译器转化为non-member方法的第一个形参.non- ... 
- Mac Pro更换SSD后,在Win7下启用ACHI的方法AHCI
			在Mac Pro下更换SSD后,如果安装Win7,要将SSD改为AHCI模式是非常麻烦的.本文介绍如何将Mac的Win7下的SSD改为AHCI方式驱动,及几种常见问题的处理. 一.当Lion与Win7 ... 
- eclipse创建多模块maven工程小结
			创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ... 
- [COCOS2DX]第一个开源项目的部署和运行<win32版本>
			1.无法加载项目: 1.1 按照之前的方法创建一个名为FirstDemo的项目,并将下载到的源代码包全部拷贝到FirstDemo中 1.2 点击demo.sln启动项目: 修改属性: 2.无法打开“g ... 
- Maven学习小结(三 基本概念)
			1.Maven POM POM(Project Object Model)项目对象模型,是用Maven来管理项目里的一个叫做pom.xml的文件.所有的项目配置信息都被定义在这个文件中, 通过这个文件 ... 
- Android_AsyncTask_DownloadImg_progressDIalog
			<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ... 
- iOS 导航控制器如何随意push和pop    想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A
			这里主要是对导航控制器的viewControllerss这个数组进行操作,因为push操作和pop操作都是根据这个数据去切换控制器或者在这个数组里增加控制器的,所以只要改变这个子控制器数据就能自定义切 ... 
- matrix computing optimization schemes
			* stackoverflow: how does BLAS get such extern performance * Howto optimizate GEMM http://wiki.cs.ut ... 
- Javascript日期处理类库Moment.js
			1.组件详情地址Moment.js中文网 http://momentjs.cn/ 2.几个方法: (1) 日期格式化 moment().format(); // 2016-02-29T14:03:30 ... 
