本文主要是介绍总结: Java BigInteger类在ACM中的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天比赛碰到一题高精度,不想用c++码了,直接在jdk帮助文档上学习了一下BigInteger,并总结了该类的一些常用方法。
总结一些BigInteger类的常用方法:
1.基本运算
加、减、乘、除、绝对值、求余、左移、右移、求幂
abs()
add(BigInteger)
subtract(BigInteger)
multiply(BigInteger)
divide(BigInteger)
mod(BigInteger)
shiftLeft(int)
shiftRight(int)
pow(int)
2.位运算
and(BigInteger)
or(BigInteger)
not(BigInteger)
xor(BigInteger)
3.比较
compareTo(BigInteger)
这个函数返回值为int !!!!!
equals(Object)
max(BigInteger)
求最大值,等于c++的max(a,b), min同理
min(BigInteger)
4.求特殊值
gcd(BigInteger)
hashCode() 返回int类型的哈希值
negate() 取相反数
nextProbablePrime() 返回下一个可能的素数
还有一些BigInteger类的常量:
BigInteger.ONE
BigInteger.ZERO
BigInteger.TEN
将常数转为BigInteger有两种方法:
1.应用构造方法
BigInteger(byte[] val) 将包含 BigInteger 的二进制补码表示形式的 byte 数组转换为 BigInteger。 |
BigInteger(int signum, byte[] magnitude) 将 BigInteger 的符号-数量表示形式转换为 BigInteger。 |
BigInteger(int bitLength, int certainty, Random rnd) 构造一个随机生成的正 BigInteger,它可能是一个具有指定 bitLength 的素数。 |
BigInteger(int numBits, Random rnd) 构造一个随机生成的 BigInteger,它是在 0 到 (2numBits - 1)(包括)范围内均匀分布的值。 |
BigInteger(String val) 将 BigInteger 的十进制字符串表示形式转换为 BigInteger。 |
BigInteger(String val, int radix) 将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger |
2.使用valueOf
valueOf
public static BigInteger valueOf(long val)
- 返回其值等于指定
long
的值的 BigInteger。 -
- 参数:
-
val
- 要返回的 BigInteger 的值。 返回: - 具有指定值的 BigInteger。
-
Java例题:UESTC 1668
传送门:http://acm.uestc.edu.cn/#/problem/show/1668
Drinks
Time Limit: 6000/2000MS (Java/Others) Memory Limit: 262144/262144KB (Java/Others)
Every weekend, amoon
这篇关于总结: Java BigInteger类在ACM中的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!