from numpy import log10, floor
from time import perf_counter
def licznik(n):
suma = 0
for i in range(1,n + 1):
suma += log10(i)
return int(floor(suma) + 1)
def ksiazka(n):
s_szerokosc = 66
s_wysokosc = 58
#Odpowiada to czcionce Liberation Mono 12 pt na stronie A4 z 2 cm marginesami
strona = s_szerokosc*s_wysokosc
s_grubosc = 0.1
liczba = int(floor(n/strona) + 1)
grubosc = (floor(n/strona/2) + 1) * s_grubosc
return liczba, grubosc
def obliczenia(n, d = 0):
wynik1 = licznik(n)
wynik2 = ksiazka(wynik1)
if d == 1:
print(f'Liczba cyfr {n}! = {wynik1}')
print(f'Liczba stron = {wynik2[0]}')
print(f'Grubość książki = {wynik2[1]} mm')
print()
else:
return wynik1, wynik2
if __name__ == "__main__":
print('###')
print('Funkcja obliczenia(n) oblicza liczbę cyfr n! oraz tablicę z liczbą stron i grubością książki potrzebną do zapisu tej liczby nie licząc okładki. Drugi parametr d = 1 drukuje wynki obliczeń.')
print()
print('Parametry')
print('Strona: A4')
print('Marginesy: 2 cm')
print('Czcionka: Liberation Mono 12 pt')
print('Grubość kartki: 0.1 mm')
print('###')
print()
print("Przykładowe obliczenia")
print()
z = [10, 10**3, 10**6, 10**8]
l = len(z)
j = 1
calkowity = 0
for i in z:
print(f'Przykład {j} z {l}')
start = perf_counter()
obliczenia(i, 1)
stop = perf_counter()
czas = round((stop - start),6)
calkowity += czas
print(f'Czas obliczeń: {czas} s\n')
j +=1
minuty = calkowity // 60
sekundy = round(calkowity % 60, 6)
print(f'Całkowity czas obliczeń: {minuty} m {sekundy} s\n')
print('Gotowe!')