• 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
120 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 (346,320 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 349 wizyt
pytanie zadane 29 marca 2016 w C i C++ przez Proszek73 Obywatel (1,140 p.)
0 głosów
3 odpowiedzi 577 wizyt
0 głosów
1 odpowiedź 976 wizyt
pytanie zadane 12 kwietnia 2016 w C i C++ przez zkkf56 Dyskutant (8,710 p.)

92,697 zapytań

141,609 odpowiedzi

320,118 komentarzy

62,057 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

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!

...