jueves, 31 de enero de 2013

BigInteger JAVA

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);
           
        }
    }

}


2 comentarios: