In [ ]:
import math
In [ ]:
def bruteforce(N):
s = str(math.factorial(N))
n = 0
for c in reversed(list(s)):
if c == '0':
n += 1
else:
break
return n
def zeros(n):
div = 5
n_zeros = 0
while div <= n:
n_zeros += int((n-n%div)/div)
div *= 5
return n_zeros
n = 25
print(bruteforce(n))
print(zeros(n))
print(math.factorial(n))
In [ ]:
from timeit import timeit
In [ ]:
def zeros1(n):
div = 5
n_zeros = 0
while div <= n:
n_zeros += int((n-n%div)/div)
div *= 5
return n_zeros
def zeros2(n):
div = 5
n_zeros = 0
while div <= n:
n_zeros += (n-n%div)/div
div *= 5
return int(n_zeros)
In [ ]:
n = 50000
%timeit zeros1(50000)
%timeit zeros2(50000)
In [27]:
class PaginationHelper:
# The constructor takes in an array of items and a integer indicating
# how many items fit within a single page
def __init__(self, collection, items_per_page):
self.collection = collection
self.items_per_page = items_per_page
# returns the number of items within the entire collection
def item_count(self):
return len(self.collection)
# returns the number of pages
def page_count(self):
ic = PaginationHelper.item_count(self)
if ic % self.items_per_page == 0:
return ic // self.items_per_page
else:
return (ic - ic % self.items_per_page) // self.items_per_page + 1
# returns the number of items on the current page. page_index is zero based
# this method should return -1 for page_index values that are out of range
def page_item_count(self, page_index):
ic = PaginationHelper.item_count(self)
pc = PaginationHelper.page_count(self)
if page_index < pc - 1:
return self.items_per_page
elif page_index == pc - 1:
return ic - self.items_per_page * (pc - 1)
else: # page_index >= pc
return - 1
# determines what page an item is on. Zero based indexes.
# this method should return -1 for item_index values that are out of range
def page_index(self, item_index):
if item_index < PaginationHelper.item_count(self) or item_index < 0:
return ( item_index - item_index % self.items_per_page ) // self.items_per_page
else:
return - 1
In [14]:
def printandtype(obj):
print(type(obj))
print(obj)
In [24]:
p1 = PaginationHelper(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], 3)
printandtype(p1.page_index(7))