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))