HDU1753 (大正小数相加)
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1753
大明A+B
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14422 Accepted Submission(s): 5290
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
#include<bits/stdc++.h>
using namespace std;
string add(string str1,string str2)
{
int l1=str1.length(),l2=str2.length();
int x1=,x2=,y1=,y2=;
for(int i=l1-;i>=;i--)
{
if(str1[i]!='.')
{
y1++;
if(y1==l1)
{
str1=str1+'.'+'';
y1=;
}
}
else
break;
}
for(int i=l2-;i>=;i--)
{
if(str2[i]!='.')
{
y2++;
if(y2==l2)
{
str2=str2+'.'+'';
y2=;
}
}
else
break;
}
if(y1>y2)
{
int k=y1-y2;
for(int i=;i<=k;i++)
{
str2=str2+'';
}
}else if(y1<y2)
{
int k=y2-y1;
for(int i=;i<=k;i++)
{
str1=str1+'';
}
}
for(int i=;i<l1;i++)
{
if(str1[i]!='.')
x1++;
else
break;
}
for(int i=;i<l2;i++)
{
if(str2[i]!='.')
x2++;
else
break;
}
if(x2>x1)
{
int k=x2-x1;
for(int i=;i<=k;i++)
{
str1=""+str1;
}
}else if(x1>x2)
{
int k=x1-x2;
for(int i=;i<=k;i++)
{
str2=""+str2;
}
}
l1=str1.length();
string str3="";
int c=;
for(int i=l1-;i>=;i--)
{
if(str1[i]=='.')
{
str3='.'+str3;
continue;
}
int x=str1[i]-''+str2[i]-''+c;
c=x/;
x=x%;
str3=char(x+'')+str3;
}
if(c!=)
{
str3=char(c+'')+str3;
}
int l3=str3.length(),f=;
for(int i=l3-;str3[i]!='.';i--)
{
if(str3[i]!='')
f=;
}
if(f==)
{
string str4="";
for(int i=;str3[i]!='.';i++)
{
str4=str4+str3[i];
}
return str4;
}
string str5="";
int ff;
l3=str3.length();
for(int i=l3-;i>=;i--)
{
if(str3[i]!='')
{
ff=i;
break;
}
}
for(int i=ff;i>=;i--)
{
str5=str3[i]+str5;
}
return str5;
}
int main()
{
string a,b;
while(cin>>a>>b)
{
string r=add(a,b);
cout<<r<<endl;
}
return ;
}
HDU1753 (大正小数相加)的更多相关文章
- float的精度,3个小数相加后精度丢失--小数比较使用bccomp()方法
$a = 1200.00;$b = 1199.80;$c = 0.1;$u = 0.12; $d = $b+$c+$u;var_dump($a);var_dump($d);var_dump(bccom ...
- HDU 1753 大明A+B (大正小数加法、字符串处理)
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- js 小数相加异常
var a = 0.1; var b = 0.2; a + b//0.30000000000000004 这个bug可能是因为二进制计算溢出导致的. 解决办法:将小数转换为整数进行计算 计算后结果除以 ...
- js 小数相加
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- JS中小数相加相减时出现很长的小数点的解决方式
1.问题: 平时写的代码中会出现这种情况,parseFloat(11.3-10.1) 运行的结果依然是1.200000000000001 代码示例: var arr = [0.0111,11.002, ...
- hdu 1002 A + B Problem II(大正整数相加)
代码: #include<cstdio> #include<cstring> #define Min(a,b) ((a)<(b)?(a):(b)) using names ...
- python 小数相加报错 invalid literal for int() with base 10
for i in column1: x = int(i) s += xprint "sum:",s,"count:",len(column1)# round ( ...
- JS 数字相加出现多个小数的问题
今天在页面上用到了js进行小数相加119.01+0.01,结果大家都知道应该是:119.02的,然而结果是119..0200000…. ,莫名其妙的,还以为是我写的程序有问题,后来查了下才知道这是ja ...
- 解决js小数求和出现多位小数问题
在小数相加时,可能会产生多个小数位.如下所示: var x=1+1; //2 var x=1.20+1.11; //2.31 var x=1.56+1.76; //3.3200000000 ...
随机推荐
- Path2.0中绚丽的的旋转菜单
我们看一下实现的效果图: 在上图中,我将菜单弹出的效果设置成直线型,最终的弹出或汇总点在下面的红色按钮中. 它的实现原理是设置动画的同时并利用动画中的插入器(interpolator)来实现弹力.主要 ...
- BlockingQueue介绍及使用
1.BlockingQueue队列和平常队列一样都可以用来作为存储数据的容器,但有时候在线程当中 涉及到数据存储的时候就会出现问题,而BlockingQueue是空的话,如果一个线程要从Blockin ...
- Pig sample用法举例
some = sample data 0.1 遍历整个数据集,获取指定比例的行数的数据,获取的数据不确定,条数也不准确. 内部重写为filter data by random() <= ...
- Django 请求参数
Django 请求参数 1.获取URL路径中的参数 需求:假设用户访问127.0.0.1/user/1/2,你想获取1,2.应该怎么操作呢? (1)未命名参数(位置参数) # 在项目下的urls.py ...
- java 中解析json步骤
一. JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. Json建构于两种结构: 1.“名称/值”对的集合(A collection ...
- windows设置VMware开机启动并开启虚拟机
1.建立开机脚本 新建start-vm.bat内容如下: "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" ...
- 2.HTML标签
<a> 链接标签 1) <a href=“#”>这是个链接</a> 表示空链接 2) 未访问过的链接 显示蓝色字体并带下划线;访问过的链接 显示紫色 ...
- [翻译] BKZoomView
BKZoomView https://github.com/freshking/BKZoomView A UIView that will zoom into its parent view. It ...
- js实现字符串一个一个依次显示
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象
一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...