Prawie się zgadzam z @hipcia w całej rozciągłości i w prawie 100%, ale u mnie niechęć sięga 99,9%. Nigdy jeszcze nie widziałem takiego podejścia do tego zadania, więc może to dobrze? Jeżeli nie int i nie long long to zostają jeszcze do przetestowania float, double i long double. Tak naprawdę to wystarcza tu typ bool, ale jak nie wiesz jak to zrobić …
Mimo wszystko gratuluję samodzielności [z małą pomocą forum]. I moje rady:
Naucz się poprawnie wklejać kod lub korzystaj z ideone.com !!! No i może przeczytaj w końcu: Jeśli zaczynasz, przeczytaj koniecznie! <-- to jest link,w który musisz kliknąć.
@narbej Faktycznie zmiana na double to znakomity pomysł Program zostanie zaliczony chociaż metoda mogłaby być szybsza z boolem.
Cóż, powiem nieskromnie, że wiem
Tzn, wiem, że zostanie zaliczony. Po prostu pisząc że zostały do przetestowania, równolegle przetestowałem te opcje w tym samym czasie [no może odrobinkę wcześniej], bo inaczej bym o nich nawet nie wspominał.
Bo pomysł nie jest znakomity, to tylko taka tam proteza czy obejście, wybrnięcie z problemu. Rozwiązań jest tu multum prostszych, ale okazuje się, że jest też i taki jak wyżej sposób i @dodename_1 będzie mógł się cieszyć kolejnym AC.
Hej! Rzeczywiście zmiana na double zadziałała!
Co do innych rozwiązań - to też podsunął mi kolega, ja miałem nieco inne, ale to mi się bardzo spodobało. Trwałem przy programie, ponieważ nie znam rozwiązań ze zmienną “bool”, a nie chciałem bezmyślnie kopiować innych schematów, tylko oprzeć się na szkielecie programu, do którego udało mi się samemu dotrzeć i poszukać pomocy u innych, bardziej doświadczonych użytkowników w tych miejscach, których nie rozumiałem.
Wszystkim bardzo dziękuję za pomoc!
Gratulacje zaliczenia zadania, jednak myślę, że warto byś jednak spróbował rozwiązania z typem bool.
Zresztą nie musi to być typ bool, wystarczy typ int.
Podpowiedź:
int p = 0;
…
for(){
…
if(coś tutaj)
p=1;
}
if(p )
…
else
…
p=0;
To jest oczywiście tylko szkielet
Metoda z typem double chociaż tutaj przeszła, jest moim zdaniem takim rozwiązaniem zastępczym. Poza tym wydaje mi się, że mogłaby już niedobrze pracować dla większych liczb np. dla liczb bliskich 1000 000 000 podejrzewam, że będzie wykazywać, że nie ma tam liczb pierwszych.
Hej, czy mógłby ktoś zerknąć na kod i podpowiedzieć co mógłbym poprawić aby został zatwierdzony. Generalnie wydaje mi się, że wszystko działa jak powinno ale jak widać coś jest jednak nie tak
int n = int.Parse(Console.ReadLine());
if (n < 100000)
{
for (int j = 0; j < n; j++)
{
int a = int.Parse(Console.ReadLine());
if (a > 0 && a <= 10000)
{
for (int i = 0; i < 1; i++)
{
if ( a == 1 || a % 2 == 0 && a != 2 || a % 3 == 0 && a != 3)
{
Console.WriteLine("NIE");
}
else
{
Console.WriteLine("TAK");
}
}
}
}
Console.ReadKey();
}
Hej, sędzia pokazuje mi, że ten kod przerkacza limit czasu. Ma ktoś pomysł dlaczego tak jest? Kod w Pythonie
n = input()
j = 0
k=[]
for n in range(0,int(n)):
i=0
number = input()
for nu in range(2,100000):
if int(number) % nu == 0:
i+=1
if i != 1:
k.append("NIE")
else:
k.append("TAK")
for num in k:
print(num)
-
Jeśli zaczynasz, przeczytaj koniecznie! <--kliknij w to proszę!
-
czy jest sens sprawdzac dzielniki, ktore sa co najmniej 10 razy wieksze niz sprawdzana liczba.
-
czy jest sens sprawdzac dzielniki wieksze niz sprawdzana liczba.
-
Brute force w pythonie na tym zadaniu moze sie nie udac
Tak jest tylko jeśli testujesz z konsoli, wtedy miesza się Twój input z outputem. Jak przekierujesz sobie stdout do pliku i uruchomisz program, zobaczysz wtedy w tym pliku to, co widzi spoj. Nie będzie tam tych liczb.
Dodatkowo, dla spoja jest bez znaczenia czy wypisujesz po kolei czy wszystko na raz, ale lepiej po kolei (zrobisz jeden test i od razu wypisz wynik), gdyż kod jest czytelniejszy.
Lub tylko przekierujesz stdin z pliku
lub przekierujesz i stdin i stdout z i do odpowiednich plików
lub użyjesz ideone z wypełnionym testem [danymi] okienkiem stdin
lub użyjesz innego rozwiązania, które robi to co powyżej
lub napiszesz sobie sam taki odpowiedni program robiący np to co ideone lub więcej
Dokładnie tak. Spoj “przekierowuje” “sobie” stdin z jednego i stdout do drugiego pliku, a nie wypisuje nic na konsoli więc “mu” się nie nie miesza.