加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

《用java来解决大数问题总结》

发布时间:2020-12-14 03:40:55 所属栏目:大数据 来源:网络整理
导读:好长时间没写过指导类型的文档了,大多都是把题目黏贴上来,然后放上代码,和一些解题思路。 今天就给大家讲一下ACM中出现的大数问题的解决方法。 在做ACM题目的时候,有时就会遇见特别大的数字,远远超过了long long定义的 类型,如果是用C语言的话,需要用

好长时间没写过指导类型的文档了,大多都是把题目黏贴上来,然后放上代码,和一些解题思路。

今天就给大家讲一下ACM中出现的大数问题的解决方法。

在做ACM题目的时候,有时就会遇见特别大的数字,远远超过了long long定义的 类型,如果是用C语言的话,需要用到数组来做,做起来得不偿失。很幸运,有java这个类库强大的语言,我们可以通过调用库函数来解决大数问题。

在解决大数问题的时候,首先需要在Main.java中引入包:import java.math.BigInteger;这个包里边包含大数的所有库函数。下面给大家介绍下比较常用的库函数(其实大家也可以自己查API文档,里边有说明的= =、)。

定义一个大数:1、BigInteger a=BigInteger.valueOf(1);注意,此时a的值为1,a是一个大数。

? ??2、BigInteger a;此时a尚未初始化,可以通过键盘输入一个大数:Scanner cin=new Scanner(System.in); a=cin.nextBigInteger();

大数的几个运算(假设此时有两个大数a,b)

加运算:a.add(b) ? ?减运算a.subtract(b) ? 乘运算:a.multiply(b) ? 除运算:a.divide(b) ?比较:a.compareTo(b);(a>b的话返回1)

比较是否相等:a.equals(b) ? 求最大公约数:a.gcd(b); ?求模:a.remainder(b);

运算就说这么多,大家可以自己查API文档看看。


这里有一点特别需要注意:当你要让一个大数a和0比较是否相等的话,如果直接a.equals(0);这是错误的,你必须把0转变为大数:BigInteger b=BigInteger.valueOf(0);然后比较,a.equals(b)。这样才是正确的。

因为上面给出的所有运算中,括号内的数字必须为BigInteger类型的


文档可能描述不是太清晰,有什么疑问可以回复。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读