• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie akceptuje zadania Liczby pierwsze SPOJ

0 głosów
129 wizyt
pytanie zadane 10 kwietnia 2021 w SPOJ przez AizoOz Początkujący (490 p.)

Nie rozumiem dlaczego wywala mi błąd i nie chce zaakceptować zadania . Ktoś widzi co jest nie tak ?

Wiem, że kod trochę karkołomny, ale robiłem sam i nie chciałem się wzorować rozwiązaniami z netu.

 

#include <iostream>

const int ArSize = 10000;

int main() {
    
    std::cout << "Liczba testow: ";
    int n;
    std::cin >> n;
    
    if (n < 99999)
    {
        int numbers[ArSize];
        int temp;
        for ( int i = 0; i < n; i++)
        {
            std::cin >> temp;
            if ( temp < 10000)
                numbers[i] = temp;
        }
        
        for (int i = 0; i < n; i++)
        {
            for ( int j = 2; j < numbers[i]; j++)
            {
                if ( numbers[i]%j == 0)
                {
                    numbers[i] = false;
                }
                else
                numbers[i] = true;
            }
        }
        
        for (int m = 0; m < n; m++)
        {
            if (numbers[m] == false)
                std::cout << "NIE\n";
            else
                std::cout << "TAK\n";
        }
        
    }
    return 0;
}

 

komentarz 22 kwietnia 2021 przez Oscar Nałogowiec (26,410 p.)
edycja 22 kwietnia 2021 przez Oscar
Trochę na dużo dziewiątek w linii 11. W ogóle to skoro masz już zdefiniowaną stałą...

O ile trafiłem na to samo zadanie to tam limit długości wejścia to 100000. Ponieważ jest narzucony limit czasu to na pewno jednym ze sprawdzeń jest sprawdzenie na maksymalnej liczbie danych wejściowych. Jak sądzę 5s na sprawdzenie 100 tys liczb wymaga by było to coś szybszego takie "brutalne" sprawdzanie każdej liczby - szczególnie, że zadanie jest z 2004 roku. Podany w zadaniu przedział wartości (mniejszy niż liczba danych do sprawdzenia) sugeruje przygotowanie sobie wcześniej tabeli liczb pierwszych...

1 odpowiedź

0 głosów
odpowiedź 22 kwietnia 2021 przez SimiVoid Pasjonat (19,350 p.)
Pobierasz liczby a potem je nadpisujesz zmienną boolowską, czy to ma sens, czego w następstwie warunek w linii 28 będzie sprawdzał 0%n lub 1%n po pierwszym przebiegu pętli for w zaczynającej się w linii 24.

Stwórz tablicę o takim samym rozmiarze tylko zmiennych typu bool.

Innym problemem że tablica nie jest dynamiczna i może być błąd podczas kompilacji.

Podobne pytania

0 głosów
3 odpowiedzi 162 wizyt
pytanie zadane 1 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,510 p.)
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Kamila1999 Nowicjusz (140 p.)
+2 głosów
1 odpowiedź 119 wizyt

88,686 zapytań

137,299 odpowiedzi

306,685 komentarzy

58,877 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...