题目描写很没意思..就是说给出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 高精度小数加法的更多相关文章

  1. hdu 1753 大明A+B(高精度小数加法)

    //深刻认识到自己的粗心,为此浪费了一天.. Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是 ...

  2. FZU 2032 Log函数问题 模拟小数加法

    题目链接:Log函数问题 2 / 49 Problem G FZU 2032 Log函数问题 不知道为什么...比赛时高精度难倒了一票人...成功搞出大新闻... 试了一下直接double相加超时,然 ...

  3. BigDecimal类(高精度小数)

    位置:java.math.BigDecimal 作用:提供高精度小数数据类型及相关操作 一.基本介绍 BigDecimal为不可变的.任意精度的有符号十进制数,其值为(unscaledValue * ...

  4. 程序设计入门——C语言 第5周编程练习 1高精度小数(10分)

    1 高精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了 ...

  5. Java中的高精度整数和高精度小数

    在实际编码中,会遇到很多高精度的事例,比如,在计算金钱的时候就需要保留高精度小数,这样计算才不会有太大误差: 在下面的代码中,我们验证了,当两个float型的数字相加,得到的结果和我们的预期结果是有误 ...

  6. 高精度小数BigDecimal+二分——java

    高精度小数第一题 import java.util.*; import java.math.*; public class Main { public static void main(String ...

  7. test 5.1 高精度小数(10分)

    请写一个程序,输入一个分数,计算出它的小数形式.无论是否可以除尽,输出最多小数点后200位. 题目内容 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现 ...

  8. HDUOJ-------1753大明A+B(大数之小数加法)

    大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. uva748 - Exponentiation 高精度小数的幂运算

    uva748 - Exponentiation   Exponentiation  Problems involving the computation of exact values of very ...

随机推荐

  1. (*p)++和*(p++)和*p++的区别

    * 和++优先级是同一级别,同一级别按照从右往左的顺序计算 所以:  *p++等价于*(p++) #define debug(x) cout << #x << " a ...

  2. WordPress环境配置与安装

    要安装wordpress,要安装apache,php,mysql,还要进行一系列复杂的配置,较为复杂. apache安装 php5.5.6 下载链接:http://windows.php.net/do ...

  3. DRF如何序列化外键的字段

    我觉得在有些应用场景下,这个操作是有用的,因为可以减少一个AJAX的请求,以增加性能. 当然,是二次请求,还是一次传输.这即要考虑用户体验,还要兼顾服务器性能. 一切是有条件的平衡吧.就算是一次传输, ...

  4. ListView系列(七)——Adapter内的onItemClick监听器四个arg参数 (转)

    举个例子你会理解的更快:X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item.如果你点了b这个item.如下: public void onItemCl ...

  5. LightOJ 1079 Just another Robbery 概率背包

    Description As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (h ...

  6. 复制表结构和数据SQL语句

    select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名 以上两句都是将 源表 的数据插入到 目 ...

  7. web的三种监听器

    servletcontextlistener servletrequestlistener httpsessionlistener

  8. Servlet应用的运行流程

    其中,红色部分为我们开发人员要做的,其他部分是框架做的. 学习就要搞懂整个运行的流程!否则,不利于个人技术的积累!

  9. 合成模式(Composite)-结构型

    原理 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待. 有时候又叫做部分-整体 ...

  10. DFS(剪枝) POJ 1724 ROADS

    题目传送门 题意:问从1到n的最短路径,同时满足花费总值小于等于k 分析:深搜+剪枝,如果之前走过该点或者此时的路劲长度大于最小值就不进行搜索. /************************** ...