再我还没有接触Java时就听说了Java有个BigInteger大数类很好用,很方便,我是比较讨厌慢慢找东西看然后学东西,所以就直接上oj找了一些高精度类的题目做了一下,在做题的过程中寻找这个东西的用法,然后总结总结,大概就做了三题,poj 3982,poj 2506,poj 1405。
大数类所用的“库”是java.math.*; 原谅我,我把import java.*.*暂且理解为C/C++里的#include <>
poj 3982:
import java.util.*;import java.math.*;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in); while (cin.hasNext()) { BigInteger a = cin.nextBigInteger(); BigInteger b = cin.nextBigInteger(); BigInteger c = cin.nextBigInteger(); BigInteger d = new BigInteger("0"); int i; for (i = 4;i <= 100;i++) { d = a.add(b.add(c)); a = b; b = c; c = d; } System.out.println(d); } }}
poj 2506 :
import java.util.*;import java.math.*;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigInteger d[] = new BigInteger[251]; d[0] = BigInteger.valueOf(1); d[1] = BigInteger.valueOf(1); d[2] = BigInteger.valueOf(3); for (int i = 3;i <= 250;i++) d[i] = d[i-1].add(d[i-2].multiply(BigInteger.valueOf(2))); Scanner cin = new Scanner(System.in); while (cin.hasNext()) { int u = cin.nextInt(); System.out.println(d[u]); } }}
poj 1405:
import java.util.*;import java.math.*;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in); int n = cin.nextInt(); BigInteger d[] = new BigInteger[19]; d[1] = BigInteger.valueOf(2); System.out.println(d[1]); for (int i = 2;i <= n;i++) { d[i] = BigInteger.valueOf(1).add(d[i-1].multiply(d[i-1].subtract(BigInteger.valueOf(1)))); System.out.println(d[i]); } }}
目前大概知道的操作如下:
x = new BigInteger("..."); 将字符串转换为BigInteger类型
BigInteger.valueOf(value); value 整型,将整型转换为BigInteger类型
BigInteger.add(BigInteger) 加法
BigInteger.subtract(BigInteger) 减法
BigInteger.multiply(BigInteger) 乘法
BigInteger.divide(BigInteger) 除法
另外输入支持cin.nextBigInteger(BigInteger)操作