• 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

Object Storage Arubacloud
0 głosów
233 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 (29,320 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,790 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 266 wizyt
pytanie zadane 1 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 405 wizyt
pytanie zadane 18 grudnia 2016 w C i C++ przez Kamila1999 Nowicjusz (140 p.)
0 głosów
3 odpowiedzi 347 wizyt
pytanie zadane 2 czerwca 2023 w C i C++ przez polandonion Mądrala (7,140 p.)

92,695 zapytań

141,608 odpowiedzi

320,112 komentarzy

62,055 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...