Dam ci parę rad bo widać że zaczynasz z zadankami
Jeśli masz zamiar uczestniczyć w Olimpiadzie Informatycznej lub w jakichkolwiek innych konkursach programistycznych to musisz nauczyć się C++. Python jest za wolny, nawet z PyPy, niestety :(.
Możesz wypisywać odpowiedź do testu kiedy chcesz, dla sędziego to jedno i to samo więc nie musisz najpierw gdzieś trzymać odpowiedzi, a dopiero na końcu wypisywać.
Odejdź od tej złej platformy jaką jest SPOJ. Wszystkie zadania są zrobione pod C++, testy często mają różne dziwne błędy, brak omówień zadań, nieścisłości w zadaniach. Jeśli chcesz poćwiczyć Pythona i troszkę pomyśleć to zapraszam na https://leetcode.com/ a jeśli bardziej chcesz skupić się na algorytmice to https://codeforces.com/
twój pomysł można było uprościć, do tego w testach są puste linie które crashowały twój program. Po zmodernizowaniu do:
import math
def main():
t = input()
while t == '':
t = input()
t = int(t)
i = 0
while i < t:
n = input()
if n == "":
continue
n = int(n)
cnt_zeros = 0
x = 5
while x <= n:
cnt_zeros += n // x
x *= 5
print(cnt_zeros)
i += 1
main()
dostaje Przekroczenie czasu, ponieważ zadanie jest zrobione pod C++ i jego prędkość (oraz wczytywanie danych). Po przepisaniu twojego pomysłu do C++ dostaje AC
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
for (int i = 0; i < t; i++){
long long n, cnt_zeros = 0, pow5 = 5;
cin >> n;
while (pow5 <= n){
cnt_zeros += n / pow5;
pow5 *= 5;
}
cout << cnt_zeros << "\n";
}
return 0;
}
Więc cokolwiek chcesz poćwiczyć, uciekaj od SPOJ-a.