Witam, mam problem.
Napisałem taki program
I moim zdaniem działa poprawnie, pokazuje liczby pierwsze, jest liczba testów, jednak sędzia go nie akceptuje. Ktoś wie w czym problem?
created
last reply
- 18
replies
- 852
views
- 9
users
- 8
likes
- 3
links
Witam, mam problem.
Napisałem taki program
Cześć,
Napisałem kod który wygląda tak:
#include
using namespace std;
int n;
int liczba=0;
string TAK=“TAK”, NIE=“NIE”;
int main()
{
cin>>n;
for (int i=0; i<n; i++)
{
cin>>liczba;
if (liczba <=1)
cout<<NIE<<endl;
else if (liczba%2>0)
cout<<TAK<<endl;
else
cout<<NIE<<endl;
}
return 0;
}
Wszystkie testy które przychdzą mi do głowy, przechodzi.
Jednak SPOJ oznacza jako błędna odpowiedz.
Czy ktoś mógł by mi wytłumaczyć gdzie popełniłem błąd?
Hej.
Możecie mi powiedzieć co tutaj jest nie tak?:
#include
using namespace std;
int main()
{
int n, x;
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> x;
if(x > 3)
{
if((x % 2) == 0 || (x % 3) == 0)
{
cout<<"NIE"<<endl;
}
else
{
cout<<"TAK"<<endl;
}
}
else if(x == 2 || x == 3)
{
cout<<"TAK"<<endl;
}
else
{
cout<<"NIE"<<endl;
}
}
return 0;
}
To żadna odpowiedź…
Ps. Jak masz tak ludziom “pomagać” to lepiej nie pisz nic…
Jeśli chcesz pomocy to dodaj również od siebie trochę wysiłku.
Nadal piszę z pełnym przekonaniem, że albo nie wiesz czym są liczby pierwsze, albo nie zwracasz uwagi na zakres danych wejściowych.
Więc może jednak zastosujesz się do mojej rady i dokładnie przemyśl mój punkt 2. Weź podręcznik z matematyki albo choćby Wikipedię i sprawdź co to są liczby pierwsze!
P.S. Co do Twojej sugestii bym nic nie pisał…
Ty masz prawo zadać pytanie a ja mam prawo udzielić taką odpowiedź jaką uważam za właściwą. Takie są prawa forum. A jeśli pomyślisz zamiast doszukiwać się urazy to może na mojej podpowiedzi skorzystasz
no niby tak,
ale jesli trzeba bedzie sprawdzic liczbe 25 to algorytm stwierdzi ze jest pierwsza a to nieprawda.
25 ma dzielniki 1 5 i 25
analogicznie
49 ma dzielniki 1 7 i 49
co robic moznaby sprawdzac czy liczba x nie dzieli sie jeszcze przez 5, 7 i tak dalej. to “i tak dalej” to ponad 20 liczb dla zakres z zadania (o ile sie nie myle)
mozna wymyslic inne podejscie, np brute force.
czy liczba x posiada dzielnik wiekszy od 1 i mniejszy od x (np petla for z instrukcja break jesli dzielnik sie taki znajdzie)
na poczatek moze by sie udalo zmiescic w zadanym czasie.
nie mam pojęcia co tu nie tak:
#include
using namespace std;
int x,n;
int dzielnik,wynik;
int P=0;
int main()
{
cin >> n;
for (int a=0; a<n; a++)
{
cin >> x;
if (x<6)
{
switch (x)
{
case 1:
case 4:
cout << "NIE"; break;
case 2:
case 3:
case 5:
cout << "TAK"; break;
default:
cout << "NIE"; break;
}
}
else
{
for (int i=2; i<x; i++)
{
dzielnik = x/i;
wynik = dzielnik*i;
if (wynik == x)
{
cout << "NIE"; P=1; break;
}
}
if (P==0) cout << "TAK";
}
P=0;
}
return 0;
}
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 169 | Feb 1 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 132 | Apr 2 |
SPOJ.com - Problem ZABAWA pl.spoj.com | Zbiór zadań | 6 | 94 | 23d |