HDU 1753 大明A+B (大正小数加法、字符串处理)
大明A+B
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16711 Accepted Submission(s): 6202
Problem Description
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
Input
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
Output
Sample Input
1.1 2.9
1.1111111111 2.3444323343
1.1
Sample Output
3.4555434454
2.1
题目分析
带小数的大数加法,我们只需要将整数部分和小数部分分别相加 然后处理进位即可
但是需要注意的是:
- 小数的加法与整数略有不同,它是左对齐的,短的需要在右边补零
- 要注意输出的时候多余的0和小数点要舍弃
- 输入的时候有可能存在 .123的情况 也就是整数部分为0,但是没有直接写出来的情况
代码
#include<bits/stdc++.h> using namespace std; string a,b;
int i,ia,ib; string bigadd(string a,string b)
{
int jin=,i;
char ai,bi;
string anss;
int lena=a.size();
int lenb=b.size();
if(lena>lenb)
anss=a;
else
anss=b;
int lenmax=max(lena,lenb);
int p=lena-;
int q=lenb-;
for(i=lenmax-;i>=;i--)
{
if(p<)
ai='';
else
ai=a[p];
if(q<)
bi='';
else
bi=b[q];
anss[i]=((ai-''+bi-''+jin)%)+'';
jin=(ai-''+bi-''+jin)/;
p--;
q--;
}
if(jin)
{
char x=jin+'';
anss=x+anss;
}
return anss;
} int main()
{
while(cin>>a>>b)
{
int lena=a.size();
int lenb=b.size();
ia=lena;
ib=lenb;
for(i=;i<lena;i++)
{
if(a[i]=='.')
ia=i;
}
for(i=;i<lenb;i++)
{
if(b[i]=='.')
ib=i;
}
string prea(a,,ia); //整数部分
if(prea.empty())
prea=""; string preb(b,,ib);
if(preb.empty())
preb=""; string la=""; //小数部分
if(ia!=lena)
la=a.substr(ia+); string lb="";
if(ib!=lenb)
lb=b.substr(ib+); string presum=bigadd(prea,preb); if(la.size()>lb.size()) //补0
{
string bu(la.size()-lb.size(),'');
lb=lb+bu;
}
if(la.size()<lb.size())
{
string bu(lb.size()-la.size(),'');
la=la+bu;
}
string lsum=bigadd(la,lb); if(lsum.size()>max(la.size(),lb.size())) //处理进位
{
string jin=lsum.substr(,lsum.size()-max(la.size(),lb.size()));
lsum=lsum.substr(lsum.size()-max(la.size(),lb.size()));
presum=bigadd(presum,jin);
}
for(i=lsum.size()-;i>=;i--) //处理多余的0
{
if(lsum[i]!='')
break;
lsum.erase(i);
} if(lsum.empty())
cout<<presum<<endl;
else
cout<<presum<<'.'<<lsum<<endl;
}
}
HDU 1753 大明A+B (大正小数加法、字符串处理)的更多相关文章
- hdu 1753 大明A+B(高精度小数加法)
//深刻认识到自己的粗心,为此浪费了一天.. Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是 ...
- [HDOJ] 1753.大明A+B (大数加法)
Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是那个只会做100以内加法的那个"小明 ...
- hdu 1753 大明A+B
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1753 容易出错的事例: 0.1 0.2 1.88 22.22 1 0.01 大概出错的几个点,做久了思维根 ...
- hdu 1753 大明A+B(大数)
题意:小数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<string.h> using na ...
- HDU 1753 大明A+B(字符串模拟,简单题)
简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...
- HDU1753 (大正小数相加)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1753 大明A+B Time Limit: 3000/1000 MS (Java/Others) ...
- HDU 5842 Lweb and String(Lweb与字符串)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- 怎样避免C#中将小数转换为字符串时出现科学记数法
在C#中如果float.double.decimal类型的值,小数点后的0太多时,C#会用科学记数法来表示小数的值. 例如下面的double类型0.00009,如果我们直接将其用ToString()方 ...
- HDUOJ-------1753大明A+B(大数之小数加法)
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- IntelliJ IDEA常用快捷键总结
之前开发项目一直用的是eclipse进行开发,近期在使用IDEA这个工具进行项目开发,之前在eclipse上能使用的快捷键方法放在IDEA上很多都不适用了,因此在此总结一下关于IDEA快捷键的使用方法 ...
- maven项目创建4
运行maven项目,首先要不最根项目添加到maven本地仓库,执行 项目-->右键-->Run as-->Maven install 注:创建war包项目,本地测试,创建index ...
- 51 Nod 大鱼吃小鱼
1289 大鱼吃小鱼 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游 ...
- HDU 4738--Caocao's Bridges(重边无向图求桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Vue Cli3工具中,配置目录别名,alias
- Spring boot之Hello World访问404
(1)404 -- 确定地址是否输入正确,,此路径非彼路径 (2)404 -- 是否用对注解,此注解非彼注解 (3)404 -- 包路径是否正确,此包非彼包 (4)404 -- 确认类包是否正确,此类 ...
- jQuery .submit()
.submit() Events > Form Events | Forms .submit( handler )Returns: jQuery Description: Bind an eve ...
- SQLServer备份计划制定
SQLServer备份计划制定 一.备份计划制定 管理-->维护计划-->维护计划向导: 可选择全库备份.差异备份.事务日志备份 为保障数据的完整性:可采用备份策略1.数据量小的场景,数据 ...
- 兼容ie9以下支持媒体查询和html5
<head> <!-- 让IE8/9支持媒体查询,从而兼容栅格 --> <!--[if lt IE 9]> <script src="https:/ ...
- 有关于Git操作(持续更新)
Git分支: 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git check ...