BigInteger JAVA
la libreria BigInteger de JAVA nos permite procesar numero grandes con sus propios métodos
debemos importar la libreria:
import java.math.BigInteger;
para crear un objeto BigInteger necesitamos colocar:
BigInteger A = new BigInteger("1");
podemos mandar de argumentos numeros grandes como cadenas o datos de tipo Long, o simplemente leer desde teclado
import java.util.Scanner; //importamos la libreria Scanner
Scanner leer = new Scanner(System.in);
BigInteger A=leer.nextBigInteger();
sumando numeros grandes:
BigInteger I=new BigInteger("10542516131213232");
A=A.add(I);
restando numeros grandes:
BigInteger I=new BigInteger("10542516131213232");
A=A.subtract(I);
multiplicando numeros grandes:
BigInteger I=new BigInteger("10542516131213232");
A=A.multiply(I);
division:
BigInteger I=new BigInteger("10542516131213232");
A=A.divide(I);
modulo:
BigInteger I=new BigInteger("10542516131213232");
A=A.mod(I);
operaciones con bits:
BigInteger I=new BigInteger("10542516131213232");
A=A.xor(I);
A=A.and(I);
A=A.or(I);
y asi se declara un arreglo unidimensional de objetos BigInteger
BigInteger Arreglo [] = new BigInteger[10001];
ahora resolvemos un problema de UVa:
500! UVa Online Judge
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
static BigInteger factorial[] = new BigInteger[10001];
public static void main(String[] args) {
factorial[0] = new BigInteger("1");
factorial[1] = new BigInteger("1");
llenar(factorial);
Scanner lee = new Scanner(System.in);
while (lee.hasNextInt()) {
int n = lee.nextInt();
System.out.println(n+"!");
System.out.println(factorial[n]);
}
}
public static void llenar(BigInteger fibo[]) {
BigInteger A=new BigInteger("2");
BigInteger I=new BigInteger("1");
for (int i = 2; i <= 10000; i++) {
fibo[i] = fibo[i-1].multiply(A);
A=A.add(I);
}
}
}