请选择 进入手机版 | 继续访问电脑版

[java] Java 处理超大数范例 之BigInteger案例详解

[复制链接]
查看121 | 回复9 | 2021-9-13 03:48:42 | 显示全部楼层 |阅读模式

一、BigInteger先容

假如 在操作的时间 一个整型数据已经超过了整数的最大范例 长度 long 的话,则此数据就无法装入,以是 ,此时要使用 BigInteger 类举行 操作。这些大数都会以字符串的情势 传入。

BigInteger 相比 Integer 的确可以用 big 来形容。它是用于科学计算,Integer 只能容纳一个 int,以是 ,最大值也就是 2 的 31 次访减去 1,十进制为 2147483647。但是,假如 必要 计算更大的数,31 位显然是不够用的,那么,此时 BigInteger 就能满足 我们的需求了。

BigInteger 可以或许 容纳的位数那可就大了,我简单试了一下,上千位没有任何题目 。除了容量大之外,BigInteger 还封装了一些常见的操作,比如 ±*/ 的基本操作,还有绝对值,相反数,最大公约数,是否是质数等等的运算。

二、BigInteger常见函数

  • BigInteger(String value):构造方法,
  • BigInteger add(BigInteger value):加法,
  • BigInteger subtract(BigInteger value):减法,
  • BigInteger multiply(BigInteger value):乘法,
  • BigInteger divide(BigInteger divisor):除法,
  • BigInteger modInverse(BigInteger m):求模,
  • BigInteger pow(int exponent):乘方,
  • BigInteger max(BigInteger value):最大数,
  • BigInteger min(BigInteger value):最小数,
  • BigInteger abs():绝对值,
  • BigInteger negate():相反数,
  • int intValue():转化int,将BigInteger范例 数据转为int。
  • BigInteger valueOf(long val):转为BigInteger,将long范例 转为BigIntege范例

示例代码

【标题 】

输入一个整数 n 1 输出一个整数
找出其全部 非空子集中全部 元素个数之和,然后对 10^9+7 取模,输出结果
比方 输入 2,有 {1},{2},{1,2} 3 个非空子集,全部 元素个数之和为 4
输出结果 为 4

思绪

用 int 肯定会超,必要 用到 BigInteger
对于输入 n,求得全部 元素之和为 n*2^(n-1)
然后再对 10^7+7 取模即可

  1. import java.math.BigInteger;
  2. import java.util.Scanner;
  3. public class Main {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. String n = sc.next();
  7. BigInteger res = count(new BigInteger(n));
  8. BigInteger m = BigInteger.valueOf(10).pow(7).add(BigInteger.valueOf(7));
  9. System.out.println(res.mod(m));;
  10. }
  11. // 计算公式 n*2^(n-1)
  12. static BigInteger count(BigInteger n) {
  13. return n.multiply(BigInteger.valueOf(2).pow(n.intValue()-1));
  14. }
  15. }
复制代码

到此这篇关于Java 处理超大数范例 之BigInteger案例详解的文章就先容 到这了,更多相干 Java 处理超大数范例 之BigInteger内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 狒狒V | 2021-9-22 17:39:58 | 显示全部楼层
今天上网不回帖,回帖就回精华帖!
回复

使用道具 举报

avatar 昀离936 | 2021-9-27 14:31:21 | 显示全部楼层
有内涵!
回复

使用道具 举报

avatar 水497 | 2021-9-28 04:03:22 | 显示全部楼层
不是惊喜,是惊吓!
回复

使用道具 举报

avatar 凌8乱 | 2021-10-2 18:35:24 | 显示全部楼层
admin楼主内心很强大!
回复

使用道具 举报

avatar 李冰381 | 2021-10-7 13:50:18 | 显示全部楼层
经典!
回复

使用道具 举报

顶一下,收藏了!
回复

使用道具 举报

精神病院在通缉admin楼主!
回复

使用道具 举报

avatar weenahbp46 | 前天 06:54 | 显示全部楼层
楼上的刚出院吧?
回复

使用道具 举报

勤奋灌水,天天向上!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则