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 浮点数加法的更多相关文章

  1. 【九度OJ】题目1137:浮点数加法 解题报告

    [九度OJ]题目1137:浮点数加法 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的 ...

  2. OpenJudge 2792 集合加法

    1.链接地址: http://bailian.openjudge.cn/practice/2792 2.题目: 总Time Limit: 3000ms Memory Limit: 65536kB De ...

  3. [九度OJ]1137.浮点数加法

    原题链接:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的和题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2... ...

  4. 九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。

    题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj 对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: ...

  5. 九度OJ 1137:浮点数加法 (大数运算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2725 解决:736 题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2...Pi.Q1Q2...Qj ...

  6. 九度oj 题目1137:浮点数加法

    题目描述: 求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2...Qj对于整数部分,P1P2...Pi是一个非负整数 对于小数部分,Qj不等于0 输入: 对 ...

  7. OpenJudge 4152 最佳加法表达式

    总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放 ...

  8. JS/PHP 浮点数精确运算

    php浮点数精确运算 bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_oper ...

  9. JS里浮点数的运算

    //浮点数加法运算 function FloatAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1]. ...

随机推荐

  1. $_SERVER详细资料整理(转)

    PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root ...

  2. 从零开始学android开发-sqlitepro安装

  3. CCNA 例题精选

    3. Refer to the exhibit. Whichtwo statements are true about interVLAN routing in the topology that i ...

  4. sqlite数据下载链接地址

    链接: http://pan.baidu.com/s/1pJN1abT 密码: yjg5

  5. matrix computing optimization schemes

    * stackoverflow: how does BLAS get such extern performance * Howto optimizate GEMM http://wiki.cs.ut ...

  6. FastDFS配置过程

    在我的生产环境中利用FastDFS实现动静分离的方案

  7. Discuz论坛架构改造

    这个论坛一直通过NFS服务共享文件给三台web服务器做负载均衡. 在实际环境中WEB Server总是出现CPU负载突然升高.文件交互的网络流量异常.甚至WEB Server夯死,NFS不能卸载,只能 ...

  8. js事件(Event)知识整理[转]

    事件注册 平常我们绑定事件的时候用dom.onxxxx=function(){}的形式 这种方式是给元素的onxxxx属性赋值,只能绑定有一个处理句柄. 但很多时候我们需要绑定多个处理句柄到一个事件上 ...

  9. HashMap多线程死循环问题

    HashMap通常会用一个指针数组(假设为table[])来做分散所有的key,当一个key被加入时,会通过Hash算法通过key算出这个数组的下标i,然后就把这个<key, value> ...

  10. 今天学习了无序列表和有序列表和使用HTML5创建表格

    ol建立有序列表,该列表可以用设置type="A/a" 其语法架构为 <ol> <li></li> <li></li> ...