ZOJ 1806 (小数高精度)】的更多相关文章

题意:八进制小数转化成十进制的小数. 0.d1d2d3 ... dk [8] = 0.D1D2D3 ... Dm [10] 例: 0.75 [8] = 7*8^-1+5*8^-2 = ( 5/8 + 7 ) / 8 = 0.953125 [10] 算法:主要就是实现上面的秦九韶算法. 实现:模拟手算除法: #include<iostream> #include<cstdio> #include<cstring> using namespace std; const in…
题目描写很没意思..就是说给出n个小数 求它们的总和 因为给出的小数点后最多16位而要求保存至12位 而能直接使用的最精确的double只能到12位 于是13的进位可能被忽略 于是不可以用double 于是它就是一个很裸的小数高精度加法..还只是加法.. 在比赛的时候学长很快就敲出来了代码并且AC 但是被别人极多提交的极短且超时代码唬住(猜测应该是直接相加) 以为直接相加的O(N)的复杂度尚且不可..所以甚至连试做都没有 赛后写出代码F9直接运行 但是小数上的进位转到整数上遗漏 更改后AC #i…
我们都知道,java中对大小数,高精度的计算都会用到BigDecimal.但是在实际应用中,运用BigDecimal还是会遇到一些问题.下面说一下我在项目中怎么样BigDecimal和遇到的一些问题. 1. 对商品的价格进行格式化,比如所有商品的价格保留两位小数 /** * * @param bd 商品的价格 * @param num 保留几位小数,如num = 2 * @return */ public static String formatPrice(BigDecimal bd,int n…
$n \leq 8000$的数列,问不超过$m \leq 1e9$次操作后第一个数字最大是多少.操作:选一些数,把他们变成他们的平均值.需要保留$p \leq 3000$位小数,提供了一个小数高精度库. 太长懒得写了..总之就是个斜率优化DP,然后有奇怪性质 原题解 基本能猜到定理八,十至今没理解QAQ 用前八个定理写了一份被卡精度的代码.就是DP的时候记决策点,然后最后用决策点算答案即可.但DP过程本身精度损得厉害,所以有些点过不了. // This is an empty program w…
1 高精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数的商,可以将相除的结果以多个整数来表示,每个整数表示结果的一位.即商的第一位用一个整数来表示,第二位用另一个整数来表示,以此类推,就可以输出一个高精度的除法结果了. 如16/19的结果0.8421052631...就可以依次输出8.4.2.1.0.5.2.6.3.1.... 而除法的过…
题目传送门 /* 杭电一题(ACM_steps 2.2.4)的升级版,使用到高精度: 这次不是简单的猜出来的了,求的是GCD (n, k) == 1 最大的k(1, n/2): 1. 若n是奇数,则k = (n-1) / 2: 2. 若n是偶数,讨论(n-1)/2 的奇偶性,若不是奇数,则是n/2-2: 详细解释(证明):http://www.xuebuyuan.com/1552889.html */ #include <cstdio> #include <iostream> #i…
题目链接:  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3494 题目大意:给定一些被禁止的BCD码.问指定范围内不含有任何这些禁止的BCD码的数的个数. 解题思路: AC自动机部分: 首先insert这些被禁止的BCD码. 然后打一下自动机前后状态的转移的表,用BCD[i][j]表示自动机状态i时,下一个数字是j的自动机的下一个状态. 一开始我考虑最先dfs的位在自动机的位置,后来发现SB了.AC自动机有一个roo…
题目要求是高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示 import java.math.BigDecimal; import java.util.Scanner; public class BD { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { BigDecimal a = scanner.n…
java 高精度实数和小数 String s = "1231222222222222222222222222222222222222222222222222222222"; BigInteger a = new BigInteger(s); System.out.println(a.toString()); String s1 = "1.2222222222222222311111111122222222222222222222222222222"; BigDeci…
在实际编码中,会遇到很多高精度的事例,比如,在计算金钱的时候就需要保留高精度小数,这样计算才不会有太大误差: 在下面的代码中,我们验证了,当两个float型的数字相加,得到的结果和我们的预期结果是有误差的,为了减小和防止这种误差的出现,我们需要使用BigInteger类和BigDecimal类来计算. package com.ietree.base.number; import java.math.BigDecimal; import java.math.BigInteger; public c…