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

Na czym polega problem z zadaniem SPOJ Liczby wyważone?

Object Storage Arubacloud
+1 głos
1,119 wizyt
pytanie zadane 6 maja 2016 w C i C++ przez k222 Nałogowiec (30,150 p.)
Mam problem z zadankiem - wziąłem się za Liczby wyważone http://pl.spoj.com/problems/LICZBYW/ i napisałem program który w skrócie polega na tym że wpisuje się liczbę jako string, wycina się 2 ostatnie cyfry i sprawdza się je. Warunek w zadaniu będzie spełniony jeśli liczba będzie podzielna przez 2 i nie będzie podzielna przez 4 (przynajmniej taki jest mój wniosek). Niestety na stronie SPOJ'a przy 3 teście dostaje rezultat "błędna odpowiedź" i mam problem ze znalezieniem problemu :) gdyż liczby  są wczytywane jako string, więc nie a problemy z długością (w zadaniu jest max 200 znaków, program działa przy większej ich ilości), co do poprawności wyników napisałem program sprawdzający liczbę parzystych i nieparzystych dzielników i sprawdzałem wyniki ręcznie - wszystko się zgadza i tak się zastanawiam co jest nie tak? Tutaj link do kodu: https://gist.github.com/anonymous/4ff850122ebaff0d1cbdcdb48bfdce37

2 odpowiedzi

0 głosów
odpowiedź 6 maja 2016 przez CzikaCarry Szeryf (75,340 p.)

Warunek w zadaniu będzie spełniony jeśli liczba będzie podzielna przez 2 i nie będzie podzielna przez 4 (przynajmniej taki jest mój wniosek)

Mylisz się. Warunek będzie spełniony jeśli będzie tyle samo dzielników parzystych co nieparzystych.

napisałem program który w skrócie polega na tym że wpisuje się liczbę jako string, wycina się 2 ostatnie cyfry i sprawdza się je.

Dlaczego 2 ostatnie cyfry? Jeśli masz jakąkolwiek liczbę większą od 99, to te dwie cyfry ci nie wystarczą. Musisz przekonwertować jakoś tą liczbę na jakiś duży typ danych i sprawdza dzielniki. Po kolei. Zlicza się parzyste i nieparzyste, a na koniec porównuje ich ilość. Jeśli ilość liczb parzystych i nieparzystych jest inna, to bierzemy liczbę większą o 1 od tej wprowadzonej cinem i powtarzamy, do skutku!

komentarz 8 maja 2016 przez k222 Nałogowiec (30,150 p.)

To, że liczba spełnia warunek zadania gdy jest podzielna przez 2 i nie jest podzielna przez 4 to prawda i można to łatwo matematycznie udowodnić (tutaj nie będę opisywał, jak ktoś będzie robił to zadanko niech sam pomyśli dlaczego), a z tego warunku wynika druga część, gdyż liczba jest podzielna przez 2 gdy jej ostatnia cyfra jest podzielna przez 2 i jest podzielna przez 4 jeśli dwie ostatnie cyfry tworzą liczbę podzielną przez 4. Twój sposób ze sprawdzaniem nie jest zbyt dobry bo te liczby z zadania mogą mieć do 200 cyfr więc nie ma szans żeby się zmieścić w czasie (nie mówiąc już o tym, że z tego co wiem nie ma aż tak dużych typów danych dla liczb i trzeba by było się bawić w dzielenie tej liczby na mniejsze). Jednak dzięki za odpowiedź bo znalazłem błąd związany w wypisywaniem dużych liczb np. jak się podawało 199 program wypisywał 1102 zamiast 202, jednak SPOJ dalej nie akceptuje rozwiązania sad.

komentarz 8 maja 2016 przez Piotr Batko Stary wyjadacz (13,190 p.)
A działa poprawnie dla 999? :)
komentarz 8 maja 2016 przez k222 Nałogowiec (30,150 p.)
edycja 8 maja 2016 przez k222

Dzięki - to pewnie to, tzn. że dla 999 nie działa to zauważyłem czytając poprzedni komentarz - jakoś tak wpadło i zmieniłem ale trochę na szybko i znowu nie działa dla 9999 i teraz muszę tylko tak to pozmieniać żeby działało dla samych 9 (podejrzewam że jeden z testów wygląda tak: 9999...999) - dzięki laugh

0 głosów
odpowiedź 21 maja 2018 przez Ehlert Ekspert (212,670 p.)

To jest problem bardziej matematyczny. Dam Ci radę:

  1. Wypisz ten ciąg 
  2. Znajdź prawidłowość
  3. Napisz kod(kilkanaście linijek) 

Podobne pytania

0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 13 listopada 2019 w C i C++ przez radek114 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 387 wizyt
0 głosów
5 odpowiedzi 452 wizyt
pytanie zadane 15 listopada 2016 w C i C++ przez szym3ns Użytkownik (860 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 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!

...