19 / 30
Sep 2018

Typ danych. Przemyśl jaki może być największy wynik i czy Ci się zmieści.

10 months later

Dla przypadku gdy nie ma znaków zapytania odpowiedź brzmi 1 np:
4 1234
ponieważ jest tylko jeden możliwy sekretny kod do wypróbowania.

A jednocyfrowy może być 0? Skąd taki wniosek?

a przeczytałeś treść zadania (dla ułatwienia, wystarczy pierwsze zdanie) ?
czy może w trakcie czytania treści myślałeś o czymś innym :slight_smile:

Czytam i czytam i jakoś nie widzę zapisu że liczba jednocyfrowa może być 0 a liczba z większą ilością cyfr już nie…
Jeżeli zaś chcesz mnie pouczyć o zerach wiodących to przytaczam wypowiedź z innego wątku

moja odpowiedź nie dotyczy tego pytania, gdyż odpowiadałem na pytanie:

a generalnie, przyjęte jest nie poprzedzanie liczb wielocyfrowych zerami wiodącymi - chyba, że istnieją przesłanki, że jest inaczej :slight_smile:

No jak widać w różnych zadaniach jest to różnie przyjęte bo w zadaniu https://pl.spoj.com/problems/FR_07_01/6 przyjęto że zera wiodące są jak najbardziej możliwe. No i mamy podwójne standardy. Tylko kiedy którego się trzymać to już nikt nie napisał…

A prywatnie też się tak wszystkiego czepiasz czy tylko na forum spoja? Bo jeśli też to współczuje ludziom w Twoim otoczeniu.

Naprawdę trzeba Ci tłumaczyć, że w https://pl.spoj.com/problems/FR_07_01/8 liczby na wejściu mogą zaczynać się od zera, bo cyfry są podane w odwrotnej kolejności a liczby normalnie mogą kończyć się zerami, podczas gdy w https://pl.spoj.com/problems/AL_10_01/6 cyfry nie są odwrócone?

W obu przypadkach liczby zgadzają się z zapisem matematycznym, gdzie wiodące zera się pomija.

I gdzie się podziało?

Dziękuję za wyjaśnienie. O wiodących zerach nie będę dyskutował bo nie chcę być postrzegany za forumowego trolla

Czy aby czasami nie jest na to już trochę za późno!?

J4rooo a pofatygowałeś się sprawdzić o co tam chodziło? O to właśnie że już po odwróceniu czyli otrzymaniu normalnej liczby mogą zera być na wejściu i trzeba je usuwać.

@manjaro

Liczb zwykle nie pisze się z zerami wiodącymi, ale można to w ogóle czynić i tylko czasami się tak robi.

Ów czasami zostało wykorzystane w zadaniu FR_07_01 - tam uznaliśmy, że mogą być zera wiodące.
W tym zadaniu zostało uznane (tak jak jest to zazwyczaj), że nie piszemy zer wiodących.
Co w tym dziwnego?

W skrócie: mogę jeść frytki z ketchupem, ale nie muszę.
Dziś nie jadłem frytek z ketchupem
Wczoraj frytki jadłem z ketchupem

Czy jest to “podwójny standard”? Tak.
Czy jest w tym jakiś problem? Nie.

W jednym zadaniu autor raz dał możliwość na wystąpienie zer wiodących, w innym nie. Nie ma z tym żadnego problemu gdyż zera wiodące występować w ogóle mogą, ale nie muszą.

Dać możliwość a uznać za błąd to dwie różne rzeczy. W tym zadaniu nie wolno stosować zer wiodących, natomiast w tamtym będziemy mieć błąd jeśli ich nie zastosujemy.

Na szczęście pomysł opłaty za wysyłanie zgłoszeń (https://pl.spoj.com/problems/MBPROB01/9) nie został wdrożony więc możesz wysyłać tyle zgłoszeń ile tylko zechcesz testując doprawdy najdziksze przypadki typu “a co jeżeli autor każe mi uporać się z liczbą mającą kilkaset tryliardów cyfr”. Na polskim SPOJu nie ma żadnego problemu z wysyłaniem zgłoszeń ile wlezie. Możesz nawet nie zapisywać kolejnych modyfikacji kodu na lokalnym komputerze tylko od co je wysyłać nawet wiedząc, że kod da WA albo się nie skompiluje, a potem w innym miejscu i na innym kompie wejść na SPOJa i bawić się aktualnym kodem. Sam tak często robię gdy mam “fazę na SPOJa” i rozwiązuję zadania w różnych miejscach.

Nim zarzucisz “no tak, SPOJ to zgadywanie rozwiązań i chwilowych zamysłów autorów zadań; to gorsze niż matura z polskiego”:

  1. pozostaje w mocy to co wielokrotnie pisałem w innych tematach
  2. pozostaje w mocy to co inni wielokrotnie pisali nie tylko w innych tematach
  3. takie podejście jak najbardziej jest profesjonalne a nawet często stosowane na poważnych konkursach, gdy np. jedyna trudność polega na dobrym zaimplementowaniu haszowania
  4. podejście w stylu “wstrzel się w klucz” doczekało się całych teorii i książek głównie pod hasłem “algorytmy randomizowane” (ewentualnie “algorytmy probabilistyczne”)
  5. takie podejście otwiera zupełnie nowe drogi do rozwiązywania zadań z sędzią dokładnym jeżeli nie jest narzucony limit zgłoszeń, a tak się składa, że “exploitowanie” zadań hardcodowaniem wyników obliczeń w kodzie czy randomizacją jest jak najbardziej metodą ich rozwiązywania, nieraz jedyną możliwą
  6. (najważniejsze) wielokrotne wysyłanie zgłoszeń i naginanie założeń autora pozwala lepiej zrozumieć treść zadania i działanie SPOJa :slight_smile:

Bez przesady :wink: Tego nie zarzucę :wink:

Chyba wygodniej jednak robić to na ideonie, więcej informacji zwrotnych dostajesz. Ostatnio tak robie bo nie wiem czy i do którego kompa uda sie dostać. A z ideona przy duuuużych checiach i z telefonu można skorzystać

@manjaro
Zauważasz, że te zadania mają dwóch różnych autorów? Chciałbyś, aby każdy z autorów rozwiązał najpierw wszystkie inne zadania na spoju aby nie stworzył czasem takiego, w którym są inne wymagania?

Jeden ułożył zadanie żeby brać pod uwagę zera wiodące, drugi żeby ich nie brać, a spoj to tylko platforma na której są umieszczone. Nie ma konieczności (i chyba możliwości) ujednolicać zadania. Musisz rozwiązywać je niezależnie.

1 year later

męczyłem się z tym zadaniem metodą prób i błędów, potem zajrzałem na forum
otóż:
dla zera znaków zapytania wynik jest 1
dla tylko jednego znaku zapytania wynik jest 10
dla reszty przypadków jest normalnie, czyli ?23 -> 9
dla 1?? -> 100

życzę miłej zabawy z zadaniem

2 years later


witam wie ktoś gdzie błąd?
przeanalizowałem te dane które były podane w temacie, wydaje się ze mój program działa dla nich poprawnie, jak i te dane z zadania i tez działa poprawnie mimo to sędzia daje błędna odpowiedz
z góry dzięki za pomoc