• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] duża liczba float na str/int

Object Storage Arubacloud
0 głosów
109 wizyt
pytanie zadane 1 kwietnia 2022 w C i C++ przez Krzysztofs1234 Użytkownik (890 p.)
Dzień dobry,

szukałem na tym forum (i nie tylko) odpowiedzi na podobne pytania, ale wciąż nie mogę rozwiązać swojego problemu. W C++ chcę operować dużymi liczbami i muszę np. mieć 26^16 lub dużo większe. To już jest ponad 20 cyfr. Zapisać jej nie mogę, bo nawet unsigned long long nie wystarcza. Chciałem wynik potęgowania zapisać jako tekst, ale to_string od jakiejś wielkości przekłamuje wyniki. Później chciałbym wyznaczyć resztę z dzielenia tej liczby przez jakąś liczbę pierwszą, która zmieściłaby się w unsigned short, ale wpierw potrzebuję wyniku potęgowania z dokładnością do jedności. W ostateczności chyba dałoby się ją uzyskać za pomocą arytmetyki modularnej: https://pl.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/modular-multiplication

Jednak zamiast potęgowania musiałbym mnożyć tyle razy, ile wynosi wykładnik i za każdym razem wyciągać resztę, i jeszcze raz ją wyliczyć na końcu.

Proszę o pomoc.

1 odpowiedź

+1 głos
odpowiedź 1 kwietnia 2022 przez adrian17 Ekspert (344,860 p.)
Jeśli cały wzór masz zdefiniowany jako arytmetykę modulo, to to nie jest "w ostateczności" - to jest normalny sposób robienia tego. Nie potrzebujesz bigintów w ogóle. Jeśli Twoim zastosowaniem jest kryptografia to też daj znać :P

A jeśli jesteś pewny że potrzebujesz, to np boost::multiprecision ma liczby całkowite dowolnej wielkości, na przykład: https://www.boost.org/doc/libs/1_72_0/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html
komentarz 1 kwietnia 2022 przez Krzysztofs1234 Użytkownik (890 p.)
edycja 1 kwietnia 2022 przez Krzysztofs1234
Cześć. Dzięki za odpowiedź. Moim zastosowaniem jest funkcja haszująca do algorytmu Karpa-Rabina. https://eduinf.waw.pl/inf/alg/001_search/0052.php

W przykładzie alfabet ma 3 znaki, a długość okna do wzorca to 5. Jeśli alfabetem byłoby chociaż pół tablicy ASCII i wzorzec miałby tych znaków ponad 20, no to naprawdę mogłyby powychodzić duże liczby. Właśnie kombinuję ze schematem Hornera, ale obawiam się, że mogą być problemy z uaktualnianiem hasza tekstowego.

Podobne pytania

0 głosów
3 odpowiedzi 344 wizyt
pytanie zadane 29 marca 2016 w C i C++ przez Proszek73 Obywatel (1,140 p.)
0 głosów
3 odpowiedzi 534 wizyt
0 głosów
1 odpowiedź 937 wizyt
pytanie zadane 12 kwietnia 2016 w C i C++ przez zkkf56 Dyskutant (8,710 p.)

92,551 zapytań

141,397 odpowiedzi

319,528 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...