1 / 25
Feb 2017

Witam, Proszę o pomoc, program przechodzi wszystkie możliwe przypadki, jednak sędzia stwierdził, że błędna odpowiedź. Przeczytałem wszystkie tematy na forum odnośnie tego zadania, jednak problemu nie rozwiązałem. Z góry dziękuję.
Pozdrawiam serdecznie.
Kod : http://ideone.com/erLGkr60

naprawdę sprawdziłeś program dla wszystkich możliwych przypadków z zakresu podanego w zadaniu ?
chyba jednak nie, bo zobacz wynik dla danych:

1
1000 3

Dla danych (1000 3) wynik jest prawidlowy (jedynie notacja roznica jest notacja naukowa- co jednak raczej nie ma znaczenia). edit. Zlikwidowalem wystąpienie notacji wykładniczej za pomoca cout.flags(ios::fixed); - Niestety nadal sędzia nie przyjmuje programu.

Może ma, może nie ma, skąd taki wniosek?

To wystarcza. Testoałeś?

Wiesz, co na ideon,com oznacza:

stdin

Standard input is empty

Jeżeli wiesz, to wiesz też, czemu u Ciebie, stdout is empty too?

Wiesz, czym się różni long od long long? Może niczym?

Zauważyłem, że udało Ci się uzyskać AC, więc właściwie nie mam więcej pytań.

Tak, uzyskałem AC rozwiązując problem za pomocą trójkąta pascala, który jest sposobem wydajniejszym, lecz nadal pozostaje zagadka dlaczego poprzednie rozwiązanie jest błędne, gdyby chodziło o wydajność lub czas to sędzia nie wyrzuciłby błednej odpoweidzi przecież.

Może tak, może nie [pozostaje to zagadką], ale do pozostałych pytań, bez odpowiedzi, dodałbym jeszcze jedno. W jaki sposób testujesz, bo chyba testujesz? swoje rozwiązania?.

Porównuje wyniki otrzymane dla zmiennych n i k na wolframie z tymi uzyskanymi przy pomocy kodu.

Ok, to wyjaśnia [odpowiada] na ostatnie pytanie, ale wcześniejsze nadal są bez odpowiedzi.

Owszem testowane - to poprawka z input'em http://ideone.com/erLGkr28
różnica long long a long uważam, że nie ma znaczenia w moim kodzie, gdyż nie ma obaw przed przekroczeniem zakresu zmiennej "pom2".

Pytałem nie w kontekscie twojego kodu, bo oczywiście, zauważyłem, że używasz long doubla. Więc może inaczej, używanie zmiennych typu zmienno przecinkowego, tam gdzie autor przewidział użycie typu stało liczbowego, zawsze wiąże się z pewnym ryzykiem. Jeżeli rozwiązałeś za pomocą trójkąta, możesz teraz napisać programik, porównujący wyniki pobierane z trójkąta, mieszczące się w zakresie, z wynikami liczonymi twoją poprzednią metodą i sprawdzić czy dla wszystkich będą takie same wyniki. Wtedy uzyskasz być może odpowiedź na pytanie:

PS
Czasami odpowiedź [notacja]

1

i

1.0000

nie robi dla sędziego róźnicy ani ani nie robi na nim wrażenia, ale jednak najczęściej wręcz wprost przeciwnie. Jest to dla niego zbyt duża i nie do przełknięcia różnica. Jednak w twoim rozwiązaniu raczej nie to jest problemem, ale raczej to co napisałem wcześniej [napisz odpowiedni programik].

1 year later

Witam.
Czy mógłbym prosić o pomoc?
Wykonałem wiele testów i dla wszystkich (których próbowałem) program pokazuje właściwy wynik.
Jednak SPOJ ma zupełnie odmienne zdanie…

Poniżej program:
Link12

czy przeczytałeś dyskusję powyżej twojego pytania ?

masz tam odpowiedź

a w przypadku wątpliwość lub niezrozumienia powyższej dyskusji uruchom program z danymi:

1
30 15

Dziękuję za odpowiedź.
Wprowadziłem kilka poprawek. Sędzia jednak znowu ma jakieś ale.
Poniżej link:
Link10

Testowałem mnóstwo przypadków i dla każdego (testowanego przeze mnie) program podaje poprawną odp.

Więc na ideone warto pokazać te całe mnóstwo, a nie tylko dwa. Kliknij w te dwa linki poniżej:


chciałem ograniczyć liczbę zmiennych (po przeczytaniu kilku komentarzy).
Problem jest rozwiązany przy zmianie zmiennej Wynik na typ double.
Link10
Jednak mimo to SPOJ go dalej nie zalicza… :confused:

No i wcale mu się nie dziwię :slight_smile: [że nie zalicza]. Stosowanie typu double do tego typu zadań wiąże się z wysokim ryzykiem [niedokładności - czasami bardzo malutkiej]. Trudno mi znaleźć odpowiedni przykład ale popatrz chociaż na poniższy i porównaj np z prawidłowym na wolframie. Ten przykład przekracza zakres danych w zadaniu ale wykazuje błąd sztuki w twoim programie:

2
60 10
60 50

9 months later

warto czytać wątek (i inne wątki dla tego zadania też) - w tym wątku masz test, dla którego twój program nie daje poprawnego wyniku

Mariusz, skoro napisałem posta o pomoc, to albo nie znalazłem odpowiedzi, albo może i znalazłem, ale jej nie rozumiem.

Powiedz mi, wstałeś lewą nogą, że wyrzucasz z siebie te kąśliwe uwagi, niewiele wnoszące do wątku?
Przecież nikt nie każe Ci tu być , daję sobie rękę uciąć, że nie jesteś na etacie Polskiego SPOJ’a by być znudzonym i zmanierowanym k…sem, który dzień w dzień 8h odpowiada na posty.

Zacznijmy więc od początku. Rozumiem, że problemem jest typ zmiennej, tak? Kombinowałem z double, dokładałem do tego round, zwiększałem też do np. unsigned long long. Efekt ciągle jest ten sam. Zostawiłem int, bo jeśli dobrze rozumiem, jest dokładny, a i pomieści wynik. Po prostu tego nie ogarniam.
Z góry dziękuję za konstruktywną pomoc.

widzę, że doceniasz mój wkład na forum spoj-a :slight_smile:

w poprzednich wcieleniach byłem Pytią, i stąd te moje wieloznaczne odpowiedzi (choć po zrozumieniu stają się całkowicie jednoznaczne :slight_smile: - jak to zwykle bywa z przepowiedniami)

a serio, programista, także przyszły, powinien mieć pewne cechy charakteru/umysłu - jeżeli zaś nie rozumie moich podpowiedzi (czy też nie chce się do nich zastosować) to znaczy, że powinien pomyśleć o jakimś mniej wymagającym zajęciu

a na bardziej konstruktywną pomoc musisz poczekać, może ktoś inny ci pomoże