Napisałem ten programik, u mnie wszystko działa, a nie przyjmuje mi tego zadania, pomoże ktoś?
Na tak postawione pytanie [+załączony kod] trudno znaleźć rozsądną podpowiedź. Nie wiadomo czy pytający chodzi jeszcze do szkoły podstawowej i czy może przypadskiem nosi okulary [jak ja]. Nie wiadomo, czy pytający, wie, że ma błędnie działający program, i potrzebuje tylko małej pomocy i naprowadzenia, w znalezieniu błędu, czy też nie widzi błędu i uważa, że jego program działa bezbłędnie.
Wygląda, że sugestie, niezadziałały, więc:
- “TAK” != “Tak”
- “NIE” != “Nie”
- Testów może być do 100 000 a nie 10 000 - przeczytaj dokładniej treść zadania.
- W funkcji first(…) brakuje na końcu return true - swoją drogą lepszą nazwą funkcji byłoby np: isPrime(…), w języku angielskim, liczby pierwsze, to prime numbers, a nie first numbers
–
Mniej istotne uwagi:
- Staraj się używać zmiennych lokalnych a nie globalnych.
- Sprawdzanie czy liczba jest pierwszą, można zakończyć o wiele szybciej, poczytaj o tym.
- Dobrze jest używać funkcji, ale ich nadmiar już nie jest dobrym pomysłem.
PS
Też tak kiedyś podpowiadałem, ale okazuje się, że w tym wypadku, najpierw wczytanie całego wejścia od razu do odpowiednio dużej tablicy [bufora], a dopiero potem wykonanie “obliczeń” skutkuje kilkakrotnie szybciej działającym programem - 0.15 vs 0.03 sek. Mam na myśli tylko tą jedną zmianę, bez żadnych innych przyśpieszaczy w rodzaaju wyłączania synchro. Możliwe więc, że warto zrewidować swoje poglądy i za każdym razem sprawdzić, zanim się podpowie
Może bez tak wielkiej różnicy, ale zdarzyły mi się tego rodzaju cudeńka na SPOJu. Nie zwracałem na nie jednak uwagi traktując je jako anomalie w działaniu sędziego.
Nie sądzę, aby należało zrewidować swoje poglądy co do przypadku ogólnego. Swoją drogą - dlatego też nie praktykuję teorii śrubowania czasów na SPOJu Tablice mogą wydawać się początkującym bardziej intuicyjne, ale w rzeczywistości ich niepotrzebne użycie jest błędem w sztuce i tyle. (Zwykle przypadkowe) poprawienie czasu o ułamek sekundy nie jest żadnym usprawiedliwieniem dla ich użycia, jeżeli nie było to konieczne.
PS http://pl.spoj.com/problems/AL_23_01/1. Zadanie polecam rozwiązać tablicą i kolejką, a następnie porównać rozwiązania pod względem wydajnościowym, złożonością kodu i możliwością zastosowania w praktyce.
Przecież @narbej Ci podpowiedział i wskazał na błędy więc o co Ci chodzi?
Poza tym umiejętność zadawania pytań nie zależy od tego czy ktoś zaczyna programować czy jest zawodowym programistą. Jakieś sugestie?
Nie jest nawet poprawnym zdaniem pytającym.
Nieźle Pewnie faktycznie - jakiaś dobrze zrobiona optymalizacja. Przypomina mi to ten najpopularniejszy na stacku wątek odnośnie c++: https://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array4 może być i tutaj przyczyna podobna.
Miałem kilka rzeczy do roboty a nie chciałem o tym zapomnieć, więc napisałem to w sposób faktycznie niejasny. Już wyjaśniam.
Zadanie zaproponowałem jako luźno związane z tematem “zadania na SPOJu vs rzeczywistość”. Pierwsze rozwiązanie problemu (wzorcówka wg forum algoligii) opiera się na kolejce: przetwarzamy dane na bieżąco, co wymaga więcej myślenia, ale stanowi rozwiązanie, jakie można by zastosować w rzeczywistości. Drugie rozwiązanie to preprocessing - wczytujemy wszystkie dane i w prostszy sposób je analizujemy. W rzeczywistości zastosowanie tego rozwiązania oznacza tyle co otwierać i zamykać bramki na autostradzie dopiero po skończonym weekendzie.
Zadanie przypomniało się mi z kilku powodów. Raz, że zapamiętałem je bardzo dobrze bo mnie zaintrygowało, a kiedy je rozwiązywałem znałem ideę kolejki, ale nie umiałem jej ładnie zastosować w podanym zadaniu. Dwa, że pojawił się temat wczytywania całego wejścia do tablicy - nie wykluczam, że także w przypadku zadania z algoligii wczytanie wejścia przyspiesza działanie programu. No i trzy - zadanie to świetnie pokazuje, że pewne rzeczy, które przejdą na SPOJu (np. nadużywanie tablic), a nawet zagwarantują świetny czas, nie przejdą w rzeczywistym świecie.
Suggested Topics
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
Zadanie Szyfrowanie2 | Zbiór zadań | 6 | 176 | May '24 |
Liczby Pierwsze | Zbiór zadań | 2 | 157 | May '24 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 125 | Jun '24 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 85 | Jul '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 94 | Feb 1 |