FZU 2032 高精度小数加法
题目描写很没意思..就是说给出n个小数 求它们的总和
因为给出的小数点后最多16位而要求保存至12位 而能直接使用的最精确的double只能到12位 于是13的进位可能被忽略 于是不可以用double
于是它就是一个很裸的小数高精度加法..还只是加法..
在比赛的时候学长很快就敲出来了代码并且AC 但是被别人极多提交的极短且超时代码唬住(猜测应该是直接相加) 以为直接相加的O(N)的复杂度尚且不可..所以甚至连试做都没有
赛后写出代码F9直接运行 但是小数上的进位转到整数上遗漏 更改后AC
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<map>
using namespace std;
int aq[300];
int bq[300];
int aw[300];
int bw[300];
char s[300];
int main() {
int n;
while(scanf("%d",&n)!=EOF) {
memset(bq,0,sizeof(bq));
memset(bw,0,sizeof(bw));
for(int j=0; j<n; j++) {
memset(aq,0,sizeof(aq));
memset(aw,0,sizeof(aw));
scanf("%s",s);
int p=strlen(s);
int len=p;
int ge=0;
for(int i=0; i<p; i++) {
if(s[i]=='.') {
p=i;
break;
}
}
int w=0;
for(int i=p+1; i<len; i++) {
aw[w++]=(s[i]-'0');
}
int ww=0;
for(int i=p-1; i>=0; i--) {
aq[ww++]=(s[i]-'0');
}
int jin=0;
for(int i=w-1; i>=0; i--) {
bw[i]+=aw[i];
bw[i]+=jin;
jin=bw[i]/10;
bw[i]%=10;
}
for(int i=0; i<ww; i++) {
bq[i]+=aq[i];
bq[i]+=jin;
jin=bq[i]/10;
bq[i]%=10;
}
int where=ww;
while(jin!=0) {
bq[where]+=jin;
jin=bq[where]/10;
bq[where]%=10;
where++;
} }
int jin=0;
if(bw[12]>=5) {
jin=1;
for(int i=11; i>=0; i--) {
bw[i]+=jin;
jin=bw[i]/10;
bw[i]%=10;
if(jin==0)
break;
}
if(jin!=0) {
for(int i=0;; i++) {
bq[i]+=jin;
jin=bq[i]/10;
bq[i]%=10;
if(jin==0)
break;
}
}
}
int ok=true;
for(int i=270; i>=0; i--) {
if(bq[i]!=0)
ok=false;
if(ok)
continue;
printf("%d",bq[i]);
}
if(ok)
printf("0");
printf(".");
for(int i=0; i<12; i++)
printf("%d",bw[i]);
printf("\n");
}
}
FZU 2032 高精度小数加法的更多相关文章
- hdu 1753 大明A+B(高精度小数加法)
//深刻认识到自己的粗心,为此浪费了一天.. Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是 ...
- FZU 2032 Log函数问题 模拟小数加法
题目链接:Log函数问题 2 / 49 Problem G FZU 2032 Log函数问题 不知道为什么...比赛时高精度难倒了一票人...成功搞出大新闻... 试了一下直接double相加超时,然 ...
- BigDecimal类(高精度小数)
位置:java.math.BigDecimal 作用:提供高精度小数数据类型及相关操作 一.基本介绍 BigDecimal为不可变的.任意精度的有符号十进制数,其值为(unscaledValue * ...
- 程序设计入门——C语言 第5周编程练习 1高精度小数(10分)
1 高精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了 ...
- Java中的高精度整数和高精度小数
在实际编码中,会遇到很多高精度的事例,比如,在计算金钱的时候就需要保留高精度小数,这样计算才不会有太大误差: 在下面的代码中,我们验证了,当两个float型的数字相加,得到的结果和我们的预期结果是有误 ...
- 高精度小数BigDecimal+二分——java
高精度小数第一题 import java.util.*; import java.math.*; public class Main { public static void main(String ...
- test 5.1 高精度小数(10分)
请写一个程序,输入一个分数,计算出它的小数形式.无论是否可以除尽,输出最多小数点后200位. 题目内容 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现 ...
- HDUOJ-------1753大明A+B(大数之小数加法)
大明A+B Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- uva748 - Exponentiation 高精度小数的幂运算
uva748 - Exponentiation Exponentiation Problems involving the computation of exact values of very ...
随机推荐
- decltype
在C++中,decltype作为操作符,用于查询表达式的数据类型.decltype在C++11标准制定时引入,主要是为泛型编程而设计,以解决泛型编程中,由于有些类型由模板参数决定,而难以(甚至不可能) ...
- 今天装了一个RTI工具
就是一个协议,需要在本机运行,今天天气有变,还要陈到家里来安装光纤宽带,昨天晚上家里下了一场雷电交加的大雨,电停了一会
- svn status 显示 ~xx
“~” 版本控制下的项目与其它类型的项目重名
- oracle 10g 学习之多表查询、分组函数(6)
笛卡尔集 l 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 l 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 自连接 select m.las ...
- Asp.net MVC中提交集合对象,实现Model绑定(转载)
Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- MVC的处理过程
MVC的处理过程,首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户.
- 我与C++的不解情缘
我是一个老实人,我当时报考C++真的全心是为了自己自考的免考,绝不是为了什么二级证,可是,进行到一半的时候,突然获悉,C++自我们这次开始,不作为免考科目了,当时我的心里啊,那个纠结,那个痛啊,随后, ...
- SqlServer2000数据库字典--表结构.sql
SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, C ...
- loadrunner录制脚本出现urs.asmx解决方法:
在loadrunner录制过程中可能出现如下脚本: 解决方法: 解决办法:打开IE9的Internet选项-->高级,把设置下面安全中“启用SmartScreen筛选器”不选中,IE默认是选中的 ...