1 / 25
Dec 2004

If you see history of his submissions you can realize that his solution doesn't solve the problem. I think it only prints the number(answer) (as the most of his program on different languages)

ps. (for Simon Gog) Am I right?

Surely printing a number in Python takes more than 0.42 seconds?! open_mouth

Besides, aren't the test cases random to some extent?

Hey, it's a tutorial problem! That means input and output don't need to be long enough to sophisticaded and long enough to be hard to guess.

26 days later

14.78 seconds!

import sys
import psyco
psyco.full()
def main():
    k = int(raw_input().split()[1])
    counter = 0
    for line in sys.stdin:
    if int(line) % k == 0:
        counter += 1

print counter
if __name__ == "__main__":
    main()

Great!!!

I (ZZZ) have never thought it's possible for Python.

14.62 seconds after I substituted the condition for if not (int(line) % k):, but probably just a random glitch...

Anyway, the real bottleneck in this case appears to have been the arithmetic and raw_input() (an iterator over stdin was much faster, as you can see). So with correct Psyco optimizing (which means putting your code in a function, as Psyco doesn't optimize module-level code), it worked!

BTW, I find it amusing that you now refer to yourself as "I (ZZZ)" wink . Maybe soon you'll start refering to yourself as "We the king" smiley ?

hahaha hehehehehe hahaha smile

it's one of my innocent hobbies - to make people smiling... smile

8 months later

The test has a maximum of 8 seconds, and it specifies you must handle at least 1 megabyte / second, so we can assume that we only have to process 8 megabyte of data or so. You can use up to 64 megabyte per execution, so you can definitely read the whole problem into memory.

Other than the people who got 0.12 seconds (!!!), I have the fastest time right now. I read the entire input in, use split("\n"), and then check each line with a simple for loop. This is with psyco - I don't think it is possible without.

2 years later

Wielkie dzieki - nie wpadlem, ze moze to byc jakis powazniejszy problem niz tylko jakis wymysl na spoju stuck_out_tongue Rzeczywiscie jest sporo artykulow na ten temat, ktore bardzo mi pomogly smile

1 year later

Witam.
Mój kod wygląda następująco. Cały czas wyświetla mi, że przekroczono limit czasu. Dlaczego? Co mogę zrobić, żeby wyeliminować ten błąd?

-- kod usunięty --

No tak, dziękuję, ja chyba jestem ślepa smile Nie zwróciłam uwagi, bo cały czas zwracało mi dobry wynik.

5 months later

Ja się z tym zadaniem już męczę kilka godzin, próbowałem chyba wszystkiego, przykłady z zadania przechodzą, a wciąż błędny wynik na spoj... Może ktoś wie co tu może być źle?

//kod zjadl troll :P (AC)

Nie wiem, czy jest taki test, ale mój AC różni się od Twojego WA tym, że dla braku danych wypisuje:

-10:||
 -9:||
 -8:||
 -7:||
 -6:||
 -5:||
 -4:||
 -3:||
 -2:||
 -1:||
  0:||
  1:||
  2:||
  3:||
  4:||
  5:||
  6:||
  7:||
  8:||
  9:||
 10:||

a Twój tylko pustą linię.
Sprawdź, czy po zmianie tego zaliczy Ci program - jak nie to dalej poszukam błędu.

jesteś pewien, że dokładnie to wypisujesz? przecież miało być "liczba na 4 polach" czyli

 -10:|| //nie pokazuje spacji przed -10, nie wiem dlaczego
  -9:||
//itd.

u siebie w programie dodałem jedną spację więcej przed wyświetlaniem liczby, ale nadal błędna odpowiedź
ustawiłem, żeby wyświetlało pusty histogram w przypadku braku danych, nadal błędna odpowiedź ;/
przeglądam ten kod już 1000 razy, porównuję z przykładowym kodem (tym w pascalu z zadania) i nie mogę znaleźć jakiejkolwiek różnicy confused
próbowałem już zaokrąglać 0.5 zarówno w górę, jak i w dół, też brak efektów frowning
mam 54 AC z łatwych zadań, a to pierwsze, z którym tak się męczę, mimo tego, że jest proste

Spacje przed pierwszymi liczbami są nieistotne - może ich w ogóle nie być (sprawdziłem).
Pokaż nowy kod, to poszukam błędu.

I nie martw się, też nie mam wszystkich łatwych, a mam niektóre średnie zadania - to, w której kategorii są zadania, nie oznacza, że są faktycznie łatwe, średnie czy trudne. To autor zadania stwierdza jaki jest wg poziom trudności. Tak więc rób zadania wg możliwości, a nie kategorii (nic na siłę). smile

działa...

int max=0; //wcześniej było max = n[0], jak tą linijkę zmieniałem
for(int i=1; i<21; i++) //zapomniałem tu ustawić i=0
if(n[i] > max) max = n[i];

no i po raz n-ty udowodniłem sobie, że najwięcej czasu w programowaniu tracę na poprawianiu takich błędów... wink
co do poziomu trudności to się zgodzę, aczkolwiek postanowiłem sobie robić po kolei, najpierw łatwe, potem średnie, potem trudne, na koniec challenge (aczkolwiek jedno challenge sobie rozwiązałem już stuck_out_tongue)

2 years later

Dzięki wielkie. Teraz działa. Dopiero zaczynam naukę z algorytmami i gdy zobaczyłem tam ograniczenie s <= 10000 to od razu dałem zmienne integer, nie podstawiając do wzoru czy przekroczy zakres.

1 year later
  1. Czytałeś regulamin? Jest tam napisane, że lepiej zrobić tablicę z zapasem, a nie na styk.
  2. Tu nawet owa tablica nie jest potrzebna, Wczytujesz jedną liczbę, liczysz, wypisujesz wynik na standardowe wyjście, a nie do tablicy, wczytujesz kolejną, liczysz dla niej... (też podejrzewam, że to jest w regulaminie - poradniku).