题目描写很没意思..就是说给出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. decltype

    在C++中,decltype作为操作符,用于查询表达式的数据类型.decltype在C++11标准制定时引入,主要是为泛型编程而设计,以解决泛型编程中,由于有些类型由模板参数决定,而难以(甚至不可能) ...

  2. 今天装了一个RTI工具

    就是一个协议,需要在本机运行,今天天气有变,还要陈到家里来安装光纤宽带,昨天晚上家里下了一场雷电交加的大雨,电停了一会

  3. svn status 显示 ~xx

    “~” 版本控制下的项目与其它类型的项目重名

  4. oracle 10g 学习之多表查询、分组函数(6)

    笛卡尔集 l  笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 l  为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 自连接 select m.las ...

  5. Asp.net MVC中提交集合对象,实现Model绑定(转载)

    Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...

  6. 动态调用Webservice 支持Soapheader身份验证(转)

    封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...

  7. MVC的处理过程

    MVC的处理过程,首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户.

  8. 我与C++的不解情缘

    我是一个老实人,我当时报考C++真的全心是为了自己自考的免考,绝不是为了什么二级证,可是,进行到一半的时候,突然获悉,C++自我们这次开始,不作为免考科目了,当时我的心里啊,那个纠结,那个痛啊,随后, ...

  9. SqlServer2000数据库字典--表结构.sql

    SELECT TOP 100 PERCENT --a.id,       CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,       C ...

  10. loadrunner录制脚本出现urs.asmx解决方法:

    在loadrunner录制过程中可能出现如下脚本: 解决方法: 解决办法:打开IE9的Internet选项-->高级,把设置下面安全中“启用SmartScreen筛选器”不选中,IE默认是选中的 ...