FZU 2032 Log函数问题 模拟小数加法
题目链接:Log函数问题
![]() |
2 / 49 | Problem G | FZU 2032 | Log函数问题 |
不知道为什么...比赛时高精度难倒了一票人...成功搞出大新闻...
试了一下直接double相加超时,然后放弃(汗),然后double 有效数字最多16位的话,确实需要高精度了呢...
然后,机智的代码:
- #include <stdio.h>
- #include <string.h>
- #include <iostream>
- using namespace std;
- int ans[200];
- char num[210];
- int main() {
- int n;
- while(~scanf("%d", &n)) {
- memset(ans, 0, sizeof(ans));
- for (int i=0; i<n; ++i) {
- scanf("%s", num);
- int len = strlen(num);
- int point = 0;
- for (int i=0; i<len; ++i) {
- if (num[i] == '.') {
- point =i;
- break;
- }
- }
- int cnt = 100;
- // 整数部分
- for (int i=point-1; i>=0; --i) {
- ans[cnt--] += num[i] - '0';
- }
- // 小数部分
- cnt = 101;
- for (int i=point+1; i<len; ++i) {
- ans[cnt++] += num[i] - '0';
- }
- }
- for (int i=199; i>0; --i) { // 检查进位
- ans[i-1] += ans[i] / 10;
- ans[i] %= 10;
- }
- if (ans[113] >= 5) ans[112]++; // 四舍五入 保留12位小数
- for (int i=199; i>0; --i) { // 四舍五入之后检查进位
- ans[i-1] += ans[i] / 10;
- ans[i] %= 10;
- }
- int out = 0;
- for (int i=0; i<113; ++i) {
- if (ans[i] || i == 100) out = 1; // 遇见第一个不是0的数 或者 到了小数部分
- if (out) printf("%d", ans[i]); // 就可以直接输出了
- if (i == 100) printf(".");
- }
- printf("\n");
- }
- return 0;
- }
突然觉得acmerhaizhentingyukuaidene...
讲道理,高精度本来就是模拟ba...
FZU 2032 Log函数问题 模拟小数加法的更多相关文章
- n阶乘,位数,log函数,斯特林公式
一.log函数 头文件: #include <math.h> 使用: 引入#include<cmath> 以e为底:log(exp(n)) 以10为底:log10(n) 以m为 ...
- POJ 1001 Exponentiation 模拟小数幂
模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...
- KEILC51可重入函数及模拟栈浅析
MARK:文章中的红色部分是个人的理解. KEILC51可重入函数及模拟栈浅析 关键字:keilc51,模拟堆栈,可重入函数调用,参数传递,C?XBP,C?ADDXBP 摘要:本文较详细的介绍了kei ...
- math。h中的log函数的应用
以10为底的log函数: 形式为 double log10(double x) 以e为底的log函数(即 ln)double log (double x) 如何表达log 以a为底b的对数: 用换 ...
- Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数 关于处理小数点位数的几个oracle函数()1. 取四舍五入的几位小数select round(1.2345, 3) fr ...
- LeetCode 326 Power of Three(3的幂)(递归、Log函数)
翻译 给定一个整型数,写一个函数决定它是否是3的幂(翻译可能不太合适-- 跟进: 你能否够不用不论什么循环或递归来完毕. 原文 Given an integer, write a function t ...
- matlab中log函数与rssi转距离
我们通常所说的log是指以10为底的对数,而MATLAB中的log却不是这样.Matlab中的log函数在默认情况下是以e为底,即loge,如果需要计算以10为底的对数,那么需要用log10()函数. ...
- PAT L1-009 N个数求和(模拟分数加法)
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(<=100).随后一行按格 ...
- mysql 用存储过程和函数分别模拟序列
在其他大部分DBMS里都有序列的概念,即Sequence或Generator. 而mysql里没有,但有时真的很有用.下面分别用存储过程和函数来模拟序列,并用程序模拟并发场景来测试原子性和完整性,是否 ...
随机推荐
- 从POI到O2O 看百度地图如何走出未来之路
近期O2O的烧钱融资大战如火如荼,有人已经把O2O大战,用乌合之众的群体心理失控来形容.其实厂商都不傻,O2O烧钱大家都知道,但是大家还知道O2O背后这块大蛋糕价值"万亿级". 有 ...
- mysql概要(六)连接
内连接 [join on / from 表1,表二 ]效果一样 区别是:可以理解为首先取得笛卡儿积后,再 内连接:取俩表的匹配数据: 左连接:取的俩表匹配数据,并且保留未匹配数据中左表的数据,右表数据 ...
- 对sizeof的思考
一.sizeof的特点(与strlen比较) 1.sizeof是运算符,strlen是函数,这意味着编译程序在编译的时候就把sizeof计算过了,所以sizeof(x)可以用来定义数组维数. 例如 i ...
- Ajax异步调用使用
//验证通知号重复 function checkinformcodeagage() { var informcode = $("#txtinformcode").val(); if ...
- paoracle中的包头(Package)与包体(Package body)
http://www.th7.cn/db/Oracle/201406/56949.shtml 简单的实例 create or replace package body integrationEgoTo ...
- Matlab中的persistent变量
persistent, 用于定义persistent变量.persistent变量对于声明它的函数来说是局部的,但是当退出该函数时,该变量仍然保存在内存中,数值并不变.persistent变量与全局变 ...
- codeblock报__objc_class_name_xxx问题
添加来一个class文件,在其他文件调用时,报下面这个错误: undefined reference to `__objc_class_name_Test' 右击Test这个类的文件弹出Propert ...
- git服务器搭建
http://blog.sina.com.cn/s/blog_904dee7f0101gait.html http://www.centoscn.com/image-text/install/2014 ...
- html list <==> unformatted list
两者的区别很大不得不擦呢,任何两个东西的差别都很大,不得混淆.---一个有ul/ol的选择,一个没有
- c++ string 与 char 互转 以及base64
c++ string 与 char 互转 很简单如下 ] = {'A','B','C','D','E'}; printf("%s\n",bts); //char to string ...