16 / 77
Apr 2015

Witam.

Chciałbym poprosić o wskazówkę, gdzie popełniłem błąd.

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
static const auto max_test = 100000;
void print(std::vector<int> _v)
{
    for (auto&& x : _v)
    {
        auto flag = true;
        if (x < 2)
        {
            std::cout << "NIE\n";
            flag = false;
            continue;
        }
        for (int i = 2; i*i <= x; i++)
        {
            if (x%i == 0)
            {
                std::cout << "NIE\n";
                flag = false;
                continue;
            }
        }
        if(flag)
            std::cout << "TAK\n";
    }
}
int main()
{
    int x;
    std::cin >> x;
    std::vector<int> v;
    if (x < max_test)
    {
        int y;
        for (int i = 0; i < x; ++i)
        {
            std::cin >> y;
            if(1 <= x && x <= 10000)
                v.push_back(y);
        }
        print(v);
    }  
    return 0;
}

Z góry dziękuję za podpowiedź.

25 days later

Ok @krystian dzieki.
male moje niedopatrzenie w tym programie powodowalo ze w szczegolnym przypadku ten program nie dzialal poprawnie.
Po malej korekcji program zostal zaliczony:P

Mam problem z powyższym kodem mógłby ktoś rzucić okiem i dać jakąś uwagę na co zwrócić uwagę czy cały jest zły ? Wyskakuje błąd przekroczenia czasu połączenia neutral_face

8 days later

unsigned short inputCout = 0;

to zbyt niska pojemność jak na 100000 testów, daj zwykłego inta i usuń kod z forum bo będzie AC.

ps za zgodność testów opisem w zadaniu odpowiada ich autor, nie musisz ich sprawdzać.

Witam,
Nie mogę sobie poradzić z sędzią... Co robię źle? Dla liczb które sprawdzałem zawsze działa frowning

1) Program powinien wypisywać TAK i NIE, "sędziuje" program porównujący pliki więc wielkość liter jest ważna
2) Może być 100000 testów, podczas gdy ty masz tablicę tylko na 10000.
3) Za zgodność wejścia z specyfikacją w zadaniu odpowiada twórca testów, nie musisz tego sprawdzać. Ze względu na błąd z punktu drugiego to była jedna z przyczyn nie zaliczenia.

Po poprawieniu punktów 1 i 2 dostałem AC, więc usuń kod z forum

2 months later

Edytowane, bo nie przeniesiono tu postu do którego mój post się odnosił.

1 month later

Witam mam prośbę o pomoc lub udzielenie wskazówki nad poprawą programu. Program działa poprawnie, sędzia go zaakceptową, jednak chciałbym w nim poprawić to żeby pozbyć się breaków oraz zmienić pętlę nieskończoną.

kod programu:

#include <iostream>

using namespace std;

int main()
{
    int testy, n, pomocnicza;
    cin >> testy;
    for(int i=0; i<testy; i++)
    {
        cin >> n;
        pomocnicza = 2;
        for( ; ; )
        {
            if (pomocnicza == n)
            {
                cout << "TAK" << endl; break;
            }
            else if(0 == n%pomocnicza)
            {
                cout << "NIE" << endl; break;
            }
            else if(n<2)
            {
                cout << "NIE" << endl; break;
            }
            pomocnicza++;
        }
    }
    return 0;
}

Po pierwsze nie dajemy tu działających kodów, po drugie jak chcesz go znacznie przyśpieszyć, to zwróć się z pomocą do pana Eratostenesa

23 days later

Witam,
Chciałbym się dowiedzieć dlaczego mój kod nie przechodzi. Gdzie robię błąd?
Kod wygoda w tak.


Dzieki sig

Testowaniem zajmuje się maszyna, więc wielkość liter ma znaczenie. Jak dasz
if(pierwsza(a))
printf("TAK\n");
else
printf("NIE\n");

To ci zaliczy ten program. Jak już to zrobi nie zapomnij usunąć kodu z forum.

czy w tym zadaniu powinien być cin >> wprowadzający poszczególne liczby ? czy tylko cin >> określający liczbę testów ? nie chcę wprowadzać kodu, bo według mnie jest dobrze, a wyskakuje mi błędny wynik, gdy wrzucam już do sprawdzenia.

A co wyrzuca Ci twój program, gdy podajesz mu [na tacy] test z zadania?

na dzień dobry proszę o "n"... i program wyrzuca:

NIE - 1 (- liczba się nie pojawia, tyyko samo TAK, NIE)
TAK - 2
TAK - 3
NIE - 4
.
.
.

Program działa w oparciu o algorytm sita E.

Możliwe, że sito dobrze przesiewa i to rozumiem, ale zupełnie nie rozumiem, dlaczego wychodzi, dlaczego twój program wyrzuca zupełnie co innego, niż jest w zadaniu po słowie output?

OUTPUT:
TAK
NIE
NIE

Możliwe, że źle prosisz [twój program prosi] o n? No i nie ma tam żadnego 1 2 3 4, tylko n = 3 i [11, 1, 4]

2 months later

POMOCY! Błąd:błędna odp.

     
#include <iostream>

using namespace std;

long long n,l;

bool p(long long n)
{
    if(n<=2)
        return false;

    for(int i=2; i*i<=n; i++)
    if(n%i==0) return false;
return true;
}


int main()
{
    cin>>l;


    for(int i=0; i<l; i++)
{
    cin>>n;
    if(p(n)) cout<<"TAK"<<endl;
    else cout<<"NIE"<<endl;
}

return 0;
}

2 jak najbardziej jest liczbą pierwszą, a ty temu przeczysz w tej if(n<=2) linijce. Popraw to i usuń kod z forum bo będzie AC.

Witam, Czy mógłby mi ktoś pomóc z kodem. Na moim komputerze działa wszystko ok, natomiast po wrzuceniu na ideone wyrzuca same odpowiedzi na NIE. Co trzeba poprawić?

include

using namespace std;
int n,i,x;
bool pierw (int t)
{
for (x=2; x {
if((t%x) == 0) return true;
}
}
int main()
{
cin>>n;
int tab[n-1];
for (i=0;i {
cin>>tab[i];
if(pierw(tab[i]) || tab[i]==1)
{
cout<<"NIE"< }
else cout<<"TAK"< }
return 0;
}

include

using namespace std;

long int n;

int main()
{
cout << "Podaj ilosc sprawdzanych liczb:";
cin >> n;

int *tablica;
tablica= new int [n];

for (int i=0; i<n; i++)
{
    cout<< "Podaj liczbe nr. " << i+1 <<":" ;
    cin >> tablica[i];
}

    for (int i=0; i<n; i++)
    {
        int liczba;
        string x;

       if (*tablica<2);
       if (*tablica==2) cout << "TAK";
       else
        {
            for (int i=1; i<*tablica-1; i++)
            {
            liczba=*tablica%(*tablica-i);
            if (liczba==0) {x="NIE"; i=*tablica;}
            else x="TAK";
            }
        }

        cout << x<<endl;
        tablica++;
    }

return 0;

}

Witam
Dlaczego sędzia nie może uznac tego kodu ? Komunikat to Przekroczono limit czasu.
Pozdrawiam