Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

JAVA BigInteger, jaką liczbę maksymalnie pomieści

Ostatnio zmodyfikowano 2011-11-14 19:59
Autor Wiadomość
DejaVu
» 2011-08-01 16:48:03
Nawet w bazach danych nie ma typu danych, który umożliwiałby wykonywanie obliczeń na liczbach dowolnej długości - po co coś takiego implementować? Do domowych zastosowań się to nie przyda :)
P-37836
markon
Temat założony przez niniejszego użytkownika
» 2011-08-01 17:00:34
mi tu chodzi bardziej o zadania algorytmiczne
P-37837
zot0
» 2011-11-14 19:59:46
Ja robiłem wyliczanie ilości mozliwych bindów pod wybraną ilością klawiszy w Javie
2 klawisze = 3 możliwe bindy
3 klawisze = 7 możliwych bindów
itd.
do 5 klawiszy dało się policzyć a co np dla 5000 klawiszy ?
do tego użyłem własnie BigInteger. normalnie wyliczam z nich silnie mnoże dziele i odejmuje.
zamieszczam kod służący do wyliczania Owych kombinacji:


import javax.swing.*;
import java.math.*;
public class hx extends Object
{
    public static void main (String args[])
    {
        int k=0;
        System.out.println("Wyliczanie ilosci kombinacji");
        String wejscie = JOptionPane.showInputDialog("Podaj ilosc elementow");
        int n = Integer.parseInt(wejscie);
        BigInteger silnia = BigInteger.valueOf(1);
        BigInteger temp = BigInteger.valueOf(1);
        BigInteger wynik = BigInteger.valueOf(0);
        BigInteger N= BigInteger.valueOf(1);
        BigInteger K= BigInteger.valueOf(1);
        BigInteger NK= BigInteger.valueOf(1);
        System.out.println("Obliczanie prosze czekac!!!");
        for (k=1;k<=n;k++)
        {
            silnia = BigInteger.valueOf(1);
            for(int i=1;i<=n;i++)/*silnia n*/
                {
                  silnia=silnia.multiply(BigInteger.valueOf(i));
                }
                N=silnia;
           silnia = BigInteger.valueOf(1);   
            for(int i=1;i<=k;i++)/*silnia k*/
                {
                  silnia=silnia.multiply(BigInteger.valueOf(i));
                }
                K=silnia;
            silnia = BigInteger.valueOf(1);   
            for(int i=1;i<=n-k;i++)/*silnia n-k*/
                {
                  silnia=silnia.multiply(BigInteger.valueOf(i));
                }
                NK=silnia;
            temp = N.divide((K.multiply(NK)));
            wynik = wynik.add(temp);
           
           
        System.out.println("wyliczono "+ k+"/"+n);   
        }
       

       System.out.println("Ilosc kombinacji dla "+n+" wynosi "+wynik );
    System.exit(0);
       
    }

}

Prosze o nie krytykowanie formy zapisu i braku optymalizacji (skracanie silni) gdyż jest to mój pierwszy program jaki zrobiłem w javie po Hello World.

Tak więc jak widać Dzialania artmetyczne i logiczne da się spokojnie wykonywać tyle , że służa do tego  odpowiednie metody.
Co do ich wielkości myślę , że ile kto ma ramu tyle będzie mógł wypisać tych cyfr i wykonywać na nich działań.
P-44037
1 « 2 »
Poprzednia strona Strona 2 z 2