Ĺadny brzuch
Jak można przechowywać wielkie liczby w C++? Chodzi mo o liczby rzędu 10000^10 a może nawet lekko większe. W long int mieści się tylko 2^32 czyli stanowczo za mało. Pomóżcie :)
P.S. Nie moge używać dysku więc rozwiązania typu zapisuj na dysk a nie do zmiennej odpadają :)
Jak można przechowywać wielkie liczby w C++? Chodzi mo o liczby rzędu 10000^10 a może nawet lekko większe. W long int mieści się tylko 2^32 czyli stanowczo za mało. Pomóżcie :)
P.S. Nie moge używać dysku więc rozwiązania typu zapisuj na dysk a nie do zmiennej odpadają :)
Powinienes napisac wlasna arytmetyke po prostu.
Powinienes napisac wlasna arytmetyke po prostu.
Operacje na tablicach charow/intow (od 0 do 9) moim zdaniem mogłyby być, chyba że masz zamiar robić działania, które trudno przedstawić przy pomocy dodawań i ewentualnie mnożeń.
masz na mysli operacje na tablicach char'ow? :) A jak się domyślasz? :> Dodawanie etc. pisemnie na stringach :)
Niekoniecznie na tablicy charow - o wiele lepiej zrobic podstawe np. 10^9. No i spokojnie mozna taka arytmetyke wykorzystac do praktycznie wszystkich dzialan (o ile wie sie, jak ja odpowiednie szybko zaimplementowac). Na poczatek polecam ksiazke Knutha, t. 2 (chyba wiadomo, jaka ksiazka :P).
można się bawić w rozpisywanie tablic, można też przyjąć poprostu inny (o większej podstawie) system liczbowy, można te pomysły połączyć, jednak prawie w każdym przypadku implementowania własnej reprezentacji dużych liczb trzeba odpowiednią arytmetykę (działania) utworzyć. w necie jest troszkę tekstów o tym, można poszukać :)
Chyba będzie trzeba tak zrobić bo myśle o tym i myśle ale jakoś mi nic do głowy nie przychodzi :) tylko, że wydaje mi się, że to wolne rozwiązanie i pamięciożerne. Jeżeli będe przechowywał po 1 liczbie to liczbe 4294967296 to potrzebuje juz 10 bajtów (1 na cyfre), a long zajmuje tylko 4 (przynajmniej u mnie) :) ale coż innego wyjścia chyba nie ma :)
P.S. Co do __int64 to chyba nie wypali (ona może chyba chować dane do wielkości 2^64 więc nadal za mało)
P.S.2 Dzięki wszystkim :)
Użytkownik adi22 edytował ten post 13 grudzień 2005, 07:40
__int64 :) jeszcze zalezy od kompilatora :]
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
P.S. Nie moge używać dysku więc rozwiązania typu zapisuj na dysk a nie do zmiennej odpadają :)
Jak można przechowywać wielkie liczby w C++? Chodzi mo o liczby rzędu 10000^10 a może nawet lekko większe. W long int mieści się tylko 2^32 czyli stanowczo za mało. Pomóżcie :)
P.S. Nie moge używać dysku więc rozwiązania typu zapisuj na dysk a nie do zmiennej odpadają :)

Powinienes napisac wlasna arytmetyke po prostu.
Powinienes napisac wlasna arytmetyke po prostu.

Operacje na tablicach charow/intow (od 0 do 9) moim zdaniem mogłyby być, chyba że masz zamiar robić działania, które trudno przedstawić przy pomocy dodawań i ewentualnie mnożeń.
masz na mysli operacje na tablicach char'ow? :) A jak się domyślasz? :> Dodawanie etc. pisemnie na stringach :)
Niekoniecznie na tablicy charow - o wiele lepiej zrobic podstawe np. 10^9. No i spokojnie mozna taka arytmetyke wykorzystac do praktycznie wszystkich dzialan (o ile wie sie, jak ja odpowiednie szybko zaimplementowac). Na poczatek polecam ksiazke Knutha, t. 2 (chyba wiadomo, jaka ksiazka :P).
można się bawić w rozpisywanie tablic, można też przyjąć poprostu inny (o większej podstawie) system liczbowy, można te pomysły połączyć, jednak prawie w każdym przypadku implementowania własnej reprezentacji dużych liczb trzeba odpowiednią arytmetykę (działania) utworzyć. w necie jest troszkę tekstów o tym, można poszukać :)
Chyba będzie trzeba tak zrobić bo myśle o tym i myśle ale jakoś mi nic do głowy nie przychodzi :) tylko, że wydaje mi się, że to wolne rozwiązanie i pamięciożerne. Jeżeli będe przechowywał po 1 liczbie to liczbe 4294967296 to potrzebuje juz 10 bajtów (1 na cyfre), a long zajmuje tylko 4 (przynajmniej u mnie) :) ale coż innego wyjścia chyba nie ma :)
P.S. Co do __int64 to chyba nie wypali (ona może chyba chować dane do wielkości 2^64 więc nadal za mało)
P.S.2 Dzięki wszystkim :)
Użytkownik adi22 edytował ten post 13 grudzień 2005, 07:40
__int64 :) jeszcze zalezy od kompilatora :]
