• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
70 wizyt
pytanie zadane 1 kwietnia w C i C++ przez Krzysztofs1234 Użytkownik (780 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 przez adrian17 Ekspert (323,640 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 przez Krzysztofs1234 Użytkownik (780 p.)
edycja 1 kwietnia 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 284 wizyt
pytanie zadane 29 marca 2016 w C i C++ przez Proszek73 Obywatel (1,140 p.)
0 głosów
3 odpowiedzi 350 wizyt
0 głosów
1 odpowiedź 488 wizyt
pytanie zadane 12 kwietnia 2016 w C i C++ przez zkkf56 Dyskutant (8,710 p.)

89,727 zapytań

138,332 odpowiedzi

309,340 komentarzy

59,649 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 429p. - Argeento
  2. 427p. - nidomika
  3. 396p. - Mikbac
  4. 392p. - ssynowiec
  5. 390p. - Łukasz Eckert
  6. 387p. - TheLukaszNs
  7. 386p. - rucin93
  8. 382p. - Marcin Harasimowicz
  9. 382p. - Michal Drewniak
  10. 378p. - JMazurkiewicz
  11. 373p. - tokox
  12. 367p. - Jarosław Roszyk
  13. 362p. - adrian17
  14. 359p. - overcq
  15. 350p. - Mawrok
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...