1 / 19
Dec 2021

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

    Dec '21
  • last reply

    Aug '22
  • 18

    replies

  • 852

    views

  • 9

    users

  • 8

    likes

  • 3

    links


Tutaj jest edytowany kod, który po wpisaniu liczby 0 cofa się do miejsca wczytania liczby. Sędzia dalej nie akceptuje

taka obsluga 0 jest chyba niepotrzebna. Zgodnie z trescia zadania nie powinno sie pojawiac jako liczba do sprawdzenia.

proponuje test
3
1
2
3

prawidlowa odpowiedź
NIE
TAK
TAK

1 month later

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?

Co dostaniesz dla takiego testu:
7
9
15
21
27
33
35
39
Poza tym kod podawaj jako link do Ideone. To co podajesz jest trudne do czytania

Nie odróżniasz liczb parzystych od liczb pierwszych ?

9 days later

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;

}

Ja Ci mogę powiedzieć:

  1. Masz niedziałający algorytm.
  2. Nie czytasz dokładnie treści zadania - nie zwracasz np. uwagi na to jaki jest zakres danych wejściowych
    2a. Ewentualnie nie wiesz co to są liczby pierwsze.
  3. Nie wiesz jak poprawnie zamieścić swój kod

To żadna odpowiedź…

  1. Właśnie chciałbym wiedzieć dlaczego
  2. Wiem co to są liczby pierwsze dlatego pomijam 1 i mniejsze, akceptuję 2 i 3 a dla reszty sprawdzam czy dzielą się jeszcze przez 2 lub 3 jeśli tak to oznacza że mają więcej niż 2 dzielniki
  3. Dopiero się uczę

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.

6 months later

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;

}

Udostępniłbyś swój kod na ideone, łatwiej będzie go oglądać
Po drugie, co zostanie wyświetlone, dla takich wartości na wejściu (przykład z zadania):

3
11
1
4