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

Długi input w pythonie

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+2 głosów
131 wizyt
pytanie zadane 11 listopada w Python przez MichaelM Bywalec (2,850 p.)
Cześć, potrzebuje pomocy z zadaniem. Sam algorytm działa mi bezbłędnie, niestety jeden z testów zakłada na wejściu liczbę n<=9*10^999999. Python nie obsługuje konwersji liczby string na int dla tak dużych wartości. Jak inaczej mogę to przekonwertować na int niż poprzez int(input())?
komentarz 11 listopada przez reaktywny Nałogowiec (44,780 p.)
Poszukaj biblioteki do dużych liczb, są takie które powinny to obsłużyć, chociaż ~milion cyfr to sporo :)

Co chcesz zrobić z tymi liczbami, jakie operacje?

Bo jeśli chcesz np. mnożyć to możesz operować na stringach bez konwersji - zastosuj Algorytm Karatsuba.

Dodawanie i odejmowanie też nie jest trudne.

Dzielenie może trochę kłopotów przysporzyć.
komentarz 11 listopada przez MichaelM Bywalec (2,850 p.)
Bibliotek żadnych nie mogę niestety używać. O stringach myślałem jako tych mniej optymalnych, poczytam o tym algorytmie szczerze nigdy o nim nie słyszałem.
komentarz 11 listopada przez reaktywny Nałogowiec (44,780 p.)
Musisz sam opracować własny algorytm dodawania, odejmowania, a do mnożenia polecam algorytm Karatsuba. Wtedy możesz działać na stringach.
2
komentarz 11 listopada przez adrian17 Mentor (351,140 p.)

Poszukaj biblioteki do dużych liczb, są takie które powinny to obsłużyć, chociaż ~milion cyfr to sporo :)

Python ma wbudowaną obsługę liczb całkowitych dowolnego rozmiaru (i rzeczywistych z `decimal`).

 a do mnożenia polecam algorytm Karatsuba

Karatsuba też już wewnętrznie używa do mnożenia.

No i co najważniejsze:

Python nie obsługuje konwersji liczby string na int dla tak dużych wartości

...u mnie działa bez problemu?

Mam plik z liczbą z 999999 cyframi, wczytuję go (zarówno z read() na pliku jak i input() na strumieniu) i int(tekst) działa - tylko trwa z 2-3s.

Możesz pokazać, co się u Ciebie dzieje?

komentarz 11 listopada przez reaktywny Nałogowiec (44,780 p.)
Sądziłem że jest limit co do liczby cyfr.
komentarz 11 listopada przez MichaelM Bywalec (2,850 p.)

@adrian17, po wklejeniu inputa otrzymuje:
Traceback (most recent call last):
  File "C:\Users\malec\Pulpit\Projekty\Olimpiada Informatyczna\2024\ZAM\zam.py", line 16, in <module>
    n = int(input())
        ^^^^^^^^^^^^
ValueError: Exceeds the limit (4300 digits) for integer string conversion: value has 1000000 digits; use sys.set_int_max_str_digits() to increase the limit

niestety nie mogę korzystać z biblioteki sys ani innych. Jednak lokalnie po zmianie limitu algorytm działa zwracając poprawny wynik, niestety przekracza limit czasu (3 sekundy) działając około minute.

komentarz 11 listopada przez adrian17 Mentor (351,140 p.)
To może musisz przemyśleć zadanie, bo z limitu czasu wynika że w ogóle nie powinieneś robić tego co próbujesz robić.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 946 wizyt
pytanie zadane 10 listopada 2019 w Nasze poradniki przez lobo.guru Obywatel (1,920 p.)
+1 głos
2 odpowiedzi 802 wizyt
0 głosów
1 odpowiedź 104 wizyt

93,188 zapytań

142,204 odpowiedzi

322,027 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2704p. - Tomasz Bielak
  5. 2678p. - Łukasz Siedlecki
  6. 2627p. - CC PL
  7. 2485p. - Marcin Putra
  8. 2443p. - rucin93
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2156p. - Anonim 3619784
  13. 2127p. - Michał Telesz
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
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! ♡

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...