import sys
def solve(h, w, sizes) -> int:
if h == 0 or w == 0:
return 0
useful_sizes = [s for s in sizes if s <= min(w,h)]
largest = useful_sizes[-1]
n = h // largest
m = w // largest
rest_h = h % largest
rest_w = w % largest
return n * m + solve(rest_h, w, useful_sizes) + solve(rest_w, h - rest_h, useful_sizes)
if __name__ == "__main__":
lines = [line for line in sys.stdin]
w, h = [int(x) for x in lines[0].rstrip().split(" ")]
n = int(lines[1].rstrip())
sizes = [int(x) for x in lines[2].rstrip().split(" ")]
possible = (w % sizes[0] == 0) and (h % sizes[0] == 0)
if not possible:
print(-1)
sys.exit(0)
print(solve(h,w,sizes))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import sys def solve(h, w, sizes) -> int: if h == 0 or w == 0: return 0 useful_sizes = [s for s in sizes if s <= min(w,h)] largest = useful_sizes[-1] n = h // largest m = w // largest rest_h = h % largest rest_w = w % largest return n * m + solve(rest_h, w, useful_sizes) + solve(rest_w, h - rest_h, useful_sizes) if __name__ == "__main__": lines = [line for line in sys.stdin] w, h = [int(x) for x in lines[0].rstrip().split(" ")] n = int(lines[1].rstrip()) sizes = [int(x) for x in lines[2].rstrip().split(" ")] possible = (w % sizes[0] == 0) and (h % sizes[0] == 0) if not possible: print(-1) sys.exit(0) print(solve(h,w,sizes)) |
English