Nie mam pojęcia co jest nie tak w tym kodzie

0

Witam
Robiłem zadanie ze SPOJA o treści:
Niech n będzie nieujemną liczbą całkowitą. Liczbę n! (czytaj n-silnia) definiuje się następująco. Jeśli n ≤ 1, to n! = 1. Dla n > 1, n! jest równe iloczynowi wszystkich liczb od 1 do n, czyli n! = 1 * 2 * ... * n. Na przykład 4! = 123*4 = 24.

Zadanie
Napisz program, który:
wczyta ze standardowego wejścia nieujemną liczbę całkowitą n,
policzy cyfrę dziesiatek oraz cyfrę jedności w zapisie dziesiętnym liczby n!,
wypisze wynik na standardowe wyjście.
Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1≤D≤30), oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku składa się z jednej linii, w której znajduje się jedna nieujemna liczba całkowita n (0 ≤ n ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia. Twój program powinien wypisać w osobnej linii dokładnie dwie cyfry (oddzielone pojedynczą spacją): cyfrę dziesiątek i cyfrę jedności liczby n! zapisanej w systemie dziesiętnym.

Robiłem testy i wszystko wychodziło poprawnie, ale SPOJ ciągle mówi, że to błędna odpowiedź. Co w tym kodzie jest nie tak?
Na dole kod:

number_of_cases = int(input())

for j in range(number_of_cases):
    number_to_factorial = int(input())
    if (number_to_factorial <= 1):
        print("0 1")
        continue
    elif(number_to_factorial>9):
        print("0 0")
        continue
    first_factorial = 1
    for i in range(2, number_to_factorial+1):
        first_factorial *= i
    number_of_unities = first_factorial - round(first_factorial,-1)
    if number_of_unities<0:
        number_of_unities= 10 + number_of_unities
    number_of_tens = int(((first_factorial - round(first_factorial,-2)) - number_of_unities)/10)
    if number_of_tens<0:
        number_of_tens = int((100 + (number_of_tens*10))/10)
    print(str(number_of_tens) + " " + str(number_of_unities))

3

Dlaczego zwyczajnie nie umieścisz tych cyfr dla silni od 1 do 9 w liście? będzie dużo prościej.

2

Jak wyżej, prozaiczne policzenie silni dla liczb do, 9 też powinno wystarczyć.

2
tb=["0 1","0 1","0 2","0 6","2 4","2 0","2 0","4 0","2 0","8 0"]
for t in range(int(input())):
    print(tb[min(9,int(input()))])

1 użytkowników online, w tym zalogowanych: 0, gości: 1