Java 處理超大數類型之BigInteger案例詳解
一、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<n<10^9
輸出一個整數
找出其所有非空子集中所有元素個數之和,然后對 10^9+7 取模,輸出結果
例如輸入 2,有 {1},{2},{1,2} 3 個非空子集,所有元素個數之和為 4
輸出結果為 4
思路
用 int 肯定會超,需要用到 BigInteger
對于輸入 n,求得所有元素之和為 n*2^(n-1)
然后再對 10^7+7 取模即可
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String n = sc.next();
BigInteger res = count(new BigInteger(n));
BigInteger m = BigInteger.valueOf(10).pow(7).add(BigInteger.valueOf(7));
System.out.println(res.mod(m));;
}
// 計算公式 n*2^(n-1)
static BigInteger count(BigInteger n) {
return n.multiply(BigInteger.valueOf(2).pow(n.intValue()-1));
}
}
到此這篇關于Java 處理超大數類型之BigInteger案例詳解的文章就介紹到這了,更多相關Java 處理超大數類型之BigInteger內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot項目的logback日志配置(包括打印mybatis的sql語句)
這篇文章主要介紹了SpringBoot項目的logback日志配置(包括打印mybatis的sql語句),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Java中Buffer緩沖區(qū)的ByteBuffer類詳解
這篇文章主要介紹了Java中Buffer緩沖區(qū)的ByteBuffer類詳解,ByteBuffer類是Java NIO庫中的一個重要類,用于處理字節(jié)數據,它提供了一種靈活的方式來讀取、寫入和操作字節(jié)數據,ByteBuffer類是一個抽象類,可以通過靜態(tài)方法創(chuàng)建不同類型的ByteBuffer對象,需要的朋友可以參考下2023-10-10
Springboot關于自定義stater的yml無法提示問題解決方案
這篇文章主要介紹了Springboot關于自定義stater的yml無法提示問題及解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06

