import numpy as np startH, startW = map(int, input().split()) n = int(input()) d = np.array(input().split(), int) # startH = 9 # startW = 10 # d = np.array([6, 3, 1]) d[::-1].sort() result = 0 h = startH w = startW if h % min(d) != 0 or w % min(d) != 0: print("-1") exit(0) while h > 0: d = d[d <= min(h, w)] # print(f" h={h}; w={w}; d={d}") firstD = 0 firstHCount = 0 for i in d: # print(f"h={h}; w={w}; i={i}") if i <= w: if firstD == 0: firstD = i firstHCount = int(h / i) result += int(w / i) * int(firstD / i) * firstHCount # print(f"result={result}") w -= int(w / i) * i h -= firstHCount * firstD w = startW print(result)
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import numpy as np startH, startW = map(int, input().split()) n = int(input()) d = np.array(input().split(), int) # startH = 9 # startW = 10 # d = np.array([6, 3, 1]) d[::-1].sort() result = 0 h = startH w = startW if h % min(d) != 0 or w % min(d) != 0: print("-1") exit(0) while h > 0: d = d[d <= min(h, w)] # print(f" h={h}; w={w}; d={d}") firstD = 0 firstHCount = 0 for i in d: # print(f"h={h}; w={w}; i={i}") if i <= w: if firstD == 0: firstD = i firstHCount = int(h / i) result += int(w / i) * int(firstD / i) * firstHCount # print(f"result={result}") w -= int(w / i) * i h -= firstHCount * firstD w = startW print(result) |