1 / 22
Aug 2019

Czesc, bylabym wdzieczna gdyby ktos wytlumaczyl mi dlaczego strona nie akceptuje mi ponizszego kodu do zadania
Kod zdaje sie byc poprawny i dosc krotki, jednak wyswietla mi sie, ze przekracza limit czasu
Bardzo prosze o sprawdzenie i rade jak moglabym to naprawic. Dopiero zaczynam programowac wiec prosze o wyrozumialosc

link do zadania


i do kodu

  • created

    Aug '19
  • last reply

    Aug '20
  • 21

    replies

  • 1.6k

    views

  • 9

    users

  • 5

    likes

  • 10

    links

  1. Po co zakładasz nowy wątek gdy istnieje już watek dla Twojego problemu?
  2. Po co nadużywasz zmiennych globalnych? Wielu mądrzejszych ode mnie twierdzi, że nie jest to dobra praktyka programowania.
  3. Co do meritum… Kod nie jest poprawny, nie rozwiązuje nawet przypadku testowego. Przeanalizuj sobie przykład testowy i z długopisem(piórem, ołówkiem …) w ręce sprawdź krok po kroku co dzieje się ze zmienną p
  1. ideone.com11 wykorzystuj nie do samego wklejania kodu i do kompiacji ale też do testowania - wklejaj do okienka stdin - input dane testowe.
  2. Gdybyś użya zmiennej lokalnej, zamiast globalnej[ pkt 2 by @korkirw], deklarując ją w odpowiednim miejscu [w środku pętli], miałabyś od razu AC.

Dziekuje za uwagi, bardzo mi pomogly
A co do nowego watku, to trafilam na regulamin zaraz po jego dodaniu, takze obiecuje poprawe w tej kwestii ;p

Gratuluje!

Warto poczytac o liczbach pierwszych i algorytmach.

Byłbym bardzo wdzięczny gdybym mógł się dowiedzieć dlaczego to nie zadziałało ? :confused:
#include

using namespace std;
int ile;
int w;
int x=0;
int main()
{
cin>>ile;
for(int i=0; i<ile; i++)
{

     cin>>w;
     x=0

    for(int i=2; i<w; i++)
    {
            if(w%i==0)
            {
            x=1;
            }

    }
    if(x==1)
    {
       cout<<"NIE" ;
    }

    else
    {
        cout<<"TAK";
    }

}

return 0;

}

Nie uwzgledniles przypadku z 1, ktora nie jest liczba pierwsza. Przeanalizuj co sie dzieje ze zmienna w, kiedy ta jest rowna 1.
Polecam popatrzec tez na rady osob wyzej :wink:

Witam. Mam podobny problem z tym zadaniem. Starałem się przetestować na wielu liczbach i wydaję mi się że wyniki są poprawne, jednak kod jest uznawany za błędną odpowiedź. Będę wdzięczny jeśli ktoś mógłby naprowadzić.
(link usunięty)

Eeeech… :slight_smile: Błąd, który popełniłeś jest zdarza się dość często na początku pracy ze SPOJEM. Bardzo prosty błąd. Wskazówka
-przeczytaj dokładnie treść zadania
-wykonaj kod dla danych testowych
-DOKŁADNIE porównaj wyniki Twoje i autora zadania

To się zdarza.
Po pierwsze dokładnie czytać treść zadania :slight_smile:
A teraz usuń link do rozwiązania, żeby nie stanowiło pokusy dla tych, którzy chcą chodzić na skróty…

1 month later

#include
#include
using namespace std;

int testy;

int szukanie(int m)
{

for(int n=2;n*n<=m;n++)
    if(m%n==0)

return false;

}

int main()
{

cin>>testy;

int liczby[testy];

for(int i = 0;i<=testy-1;i++)
{
    cin>>liczby[i];
}

for(int i = 0;i<=testy-1;i++)
{
    int m = liczby[i];

    if (liczby[i]!= 0 && liczby[i]%1 == 0 && liczby[i]%liczby[i] == 0 && szukanie(m)!= false && liczby[i]!= 1 && liczby[i]>0)
        cout<<"Tak"<<endl;
    else if(liczby[i] ==2)
        cout<<"Tak"<<endl;
    else
        cout<<"Nie"<<endl;
}



return 0;

}

Hejka, może mi ktoś powiedzieć dlaczego SPOJ uważa ten kod za błędny?

Co się dziwić, że SPOJ uznaje go za błędny skoro dla każdej wpisanej liczby wynik brzmi “Nie”. Jak poprawisz swój kod przeczytaj co napisałem dwie wypowiedzi wcześniej.
Pomijając kwestie merytoryczne to:

  1. Po co sprawdzasz czy liczba jest różna od 0 skoro w specyfikacji wejścia jest, że na wejściu będą liczby od 1 wzwyż.
  2. Jaki sens ma sprawdzanie czy reszta z dzielenia przez 1 wynosi 0???
  3. Po co używasz raz liczba[i] a raz m skoro to jedno i to samo? Chyba tylko po to by zaciemnić obraz.
  4. Dodam jeszcze nieczytelnie wklejony kod. Dlaczego nie podałeś go jako link do ideone? Tak jest najwygodniej.

Hej, dziękuję za porady, ale dalej mam jeden problem. Uprościłem trochę mój kod i kiedy uruchamiam go u siebie w konsoli działa on jak należy ( odpowiada “tak” na liczby pierwsze), spoj dalej go nie przyjmuje.

oto kod do ideone:

I może jeszcze Jeśli zaczynasz, przeczytaj koniecznie!

Czasami wystarczy napisać [na kolanie?] kod i od razu zadziała. Najczęściej jednak trzeba go jeszcze testować, a szczególnie, gdy dostajesz WA [błędna odpowiedź].

PS
Gdy autor zadania oczekuje TAK/NIE, to Tak/Nie jest poważnym błędem.

Jeden return false to za mało. Return domyślny nie jest określony, więc potrzebujesz jeszcze return true.

Dziękuje za radę, i miałeś rację. Gdy zamieniłem tak/nie na TAK/NIE mój kod został przyjęty :smiley:

Hejka, mógłby mi ktoś podpowiedzieć, dlaczego mi to odrzuca?
Z góry dziękuję (:slight_smile:

Bo …
Linia nr 7 jest bez sensu - Wiesz jak jest sprawdzana poprawność twojego rozwiązania?
Linia 9 jest bez sensu. A co się stanie, gdy nigdy nie pojawią się liczby <= 0 lub >= 100000, [bo się nie pojawią!!]?
Linie 10 i 12 są bez sensu. Znasz tylko tyle liczb pierwszych? A 11, a 13 a 17 itd
Wg Ciebie [twojego programu] 121, 169, 289 … sa liczbami pierwszymi, a przecież nie są

121 = 11 * 11, 169 = 13 * 13 oraz 289 = 17 * 17 itd.

Poczytaj o sprawdzxaniu pierwszości w dowolnym źródle wiedzy.

A na początek proponuję Ci, zrób te 3 proste zadania ::
https://pl.spoj.com/problems/PTEST/10,
https://pl.spoj.com/problems/RNO_DOD/6,
https://pl.spoj.com/problems/POTSAM/4,

AD linia 9 - pętla nigdy się nie skończy a w efekcie błąd SIGXFSZ

10 months later