25 / 25
Feb 2019

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

Mariusz, doceniam i dziękuję. Cieszę się, że są tacy ludzie jak Ty, którzy dzielą się swoją wiedzą.
Po prostu nie wszyscy są na tym samym poziomie. Czytam i nie rozumiem. Dlatego zapytałem. Ot co.

2 months later

Cześć mam podobny problem co w tym temacie, wszystkie przykładowe wyniki mi wychodzą i myślę że nie przekraczam zakresu zmiennych, jednak sędzie mi odrzuca moje rozwiązanie, przy tworzeniu skorzystałem ze wzoru na dwumian Newtona oto kod: https://ideone.com/T57BNy12

in:
1
50 23

out:
108043253365600 (to raczej nie zmieści się w int)

sprawdź zakres zmiennej typu int.

test powyżej, to nie jest najlepszy test :slight_smile: - nie spełnia warunku z zadania

ja proponuję test:

1
45 9

faktycznie, zapomniałem o warunku: “Liczby n i k będą dobrane tak, aby wynik nie przekroczył 1 000 000 000.” - czyli jednak się mieści, tak to jest jak leci się z pamięci.