1 / 23
Sep 2018

Witam,
mógłby ktoś podać bardziej newralgiczne testy do zadania, oczywiście te podane w przykładach przechodzi bez problemu.
Nie wiem czy wychodzi mi poprawny wynik dla liczby 18446744073709551615.
Link do kodu: https://ideone.com/S90hgd53.

  • created

    Sep '18
  • last reply

    Dec '23
  • 22

    replies

  • 1.2k

    views

  • 7

    users

  • 4

    likes

  • 3

    links

raczej nie, mnie wychodzi: 1029360799201087510

Dzięki, AC.
Jak oni to robią że mają czas rzędu milisekund, fast IO tyle daje?

raczej właściwy algorytm, mam czas 0,03 bez fast i/o
ale prawdą jest, że przy prostych obliczeniach z dużą ilością danych numerycznych fast i/o pozwala zmniejszyć czas 5 i więcej razy

spróbuj zmienić cin/cout na scanf/printf

6 months later

Witam, mój program ma problem z obliczeniami/zaokrąglaniem dużych liczb. Dobrze widać to na przykładzie (w 1 kolumnie powinien być ciąg 9):

99999999999999 1388888888888889
999999999999999 14888888888888888
10000000000000000 158888888888888896
100000000000000000 1688888888888888832

Jak można temu zaradzić?

Napisać swoją własną funkcję pow, która będzie działała na liczbach całkowitych, a nie zmiennoprzecinkowych jak standardowa (co powoduje właśnie te błędy), a jeszcze lepiej nie liczyć za każdym obiegiem pętli nowej potęgi, tylko mieć jedną zmienną i po każdym obiegu mnożyć przez 10.

4 years later

Przed wysyłką, chciałem sprawdzić, poproszę jakiś test ?

Powyżej jest parę testów, ale przecież, nie ma wcale takiego obowiązku - testowania przed wysłaniem. Śmiało możesz wysłać i może okaże się, że masz bezbłędny kod.
Jeśli jednak upierasz się testować, to tu samodzielnoś też jest pożądana i chwalebna. Sam wymyśl testy, a ewentualnie tu pokaż je i wyniki swojego programu i spytaj czy są poprawne.

Właśnie mam 1029360799201087511 ?, a na forum jest 1029360799201087510 dla max

Ja mam:
1029360799201087510,
więc może masz kod ok?
Tzn mój kod też daje taki sam wynik dla: 18446744073709551600

Pewna określona liczba stron jest liczbą całkowitą, a nie typu float, czy double. Long double też tu nic nie zmieni, ani nie pomoże. Całkowita, to całkowita. No i w zadaniu nie uwzględnia się np -10 stron (minus dziesięć stron), ani żadnych takich. Podobnie jak porwanych stron - połówek, ćwiartek itp. W końcu to jest świeży druk, jeszcze pachnący farbą drukarską :wink:

Jako autor zadania, mam wgląd do nadesłanych kodów i zauważyłem w twoim kodzie, deklarację long double - możliwe, że jest to tylko nieużywana deklaracja.
Niestety, nie mam w tej chwili dostępu do ko.putera - piszę z komórki. Proszę, uzbroj się w cierpliwość, na razie zajmij się innym zadaniem. Może to ja mam jakiś błąd w swoim rozwiązaniu. Na pewno, gdy tylko będę miał dostęp do kompa, zajmę się tym.

Zmieniłem całkowicie podejście do rozwiązania.
Mam już wynik 1029360799201087510 dla 18446744073709551615

Ale nadal błąd.

No cóż, zelcer nie wylewał za kołnierz, a może chciał trochę naciągnąć drukarnię, a może nie umiał dobrze liczyć. Tak czy siak, takie przypuszczenie, mógł na przykład podać liczbę 14, a jak łatwo policzyć, do wydruku 11 stron potrzeba tylko 13 czcionek, ale do wydruku 12 stron już 15. 14 nie wystarczy na 12 stron, ale na 11 tak, a nawet jedna czcionka zostanie. Więc jeżeli podał nierzetelną liczbę użytych czcionek, my liczymy ile mógłby maksymalnie wydrukować stron, zużywając ewentualnie naprawdę kilka- naście czcionek mniej… :slight_smile: Analogicznie mógł podać inną dowolnie dużą liczbę wyssaną z palca, a ty programisto martw się i kombinuj. W tej chwili niestety, jak już wspominałem, nie jestem w stanie tego zweryfikować, z wielluuu powodów, hyyp, sorry coś mi się odbiło ;-).

A tak naprawdę, to:
Mea culpa, mea culpa, mea very big culpa!
Dałem plamę i nierzetelnie wygenerowane, nidostosowane do treści zadania dane testowe - bardzo prawdopodobnie więc przepraszam.
Będę musiał coś z tym zrobić. Poprawić testy lub zmienić - poprawić treść zadania.