Java大数类题目总结

(1)关于大数运算的题目汇总:
hdu1002整数和
hdu1042阶乘-----相似题51nod1059
hdu1047累加和
hdu1063幂运算(注意去除前导0与后导0)
hdu1316有多少斐波那契数(注意大数之间的比较)
hdu1715求第i个斐波那契数是多少-----相似题hdu1250
hdu1753小数和(去除前导0与后导0)
51nod1030进制转换
51nod1130阶乘长度(牢记斯特林公式)
(2)使用JAVA写大数类的一些注意:

  • 初始化用new BigDecimal("1") ;
  • 求阶乘用的是BigDecimal
  • a.compareTo(b)方法:用作比较大小,a>b(返回1),a==b(返回0),a
  • 输入不为零使用:num.compareTo(BigInteger.ZERO) != 0
  • 去除后导零使用:num.stripTrailingZeros() 去除前导零:if (s.startsWith(“0”)) s =s.substring(1);
  • 关闭科学计数法用:.toPlainString()
  • 一般使用字符串来接收大数类型,去除前导零可以用String类型的切片方法。
  • 斐波那契数列问题需要开大数数组,数组大小可以依据:1-10^100之间的斐波那契数有479个。
  • 大数数组开到十万会爆内存,所以说不知道开多少的时候最大先开到一万。
  • 涉及到进制转换,牢记chang函数return BigInteger(n,i).toString(j);并且输入用String类型。
  • 求阶乘长的斯特林公式是long ans = (long) (Math.log10(2 * PI * n) / 2 + n* Math.log10(n / e) + 1);

(3)其他注意:

  • 牛顿迭代法无法用Java大数类完成。

你可能感兴趣的:(【算法竞赛题】)