算法题分巧克⼒(Python)题⽬
⼉童节那天有 K 位⼩朋友到⼩明家做客。
⼩明拿出了珍藏的巧克⼒招待⼩朋友们。
⼩明⼀共有 N 块巧克⼒,其中第 i 块是 Hi×Wi 的⽅格组成的长⽅形。
为了公平起见,⼩明需要从这 N 块巧克⼒中切出 K 块巧克⼒分给⼩朋友们。
切出的巧克⼒需要满⾜:
1. 形状是正⽅形,边长是整数
2. ⼤⼩相同
例如⼀块 6×5 的巧克⼒可以切出 6 块 2×2 的巧克⼒或者 2 块 3×3 的巧克⼒。
当然⼩朋友们都希望得到的巧克⼒尽可能⼤,你能帮⼩明计算出最⼤的边长是多少么?美国警告德国
输⼊格式
vigilant第⼀⾏包含两个整数 N 和 K。
以下 N ⾏每⾏包含两个整数 Hi 和 Wi。
输⼊保证每位⼩朋友⾄少能获得⼀块 1×1 的巧克⼒。
输出格式
输出切出的正⽅形巧克⼒最⼤可能的边长。
数据范围
1≤N,K≤10^5
1≤Hi,Wi≤10^5
儿童python入门教程输⼊样例:
2 10
6 5
好看的pyqt5
5 6
输出样例:
2
代码
N, K = map(int, input().split()) MAX = 0
cakes = []
for _ in range(N):
w, h = map(int, input().split()) MAX = max(MAX, w, h)
cakes.append([w, h])
def cal(size):
cnt = 0
for w, h in cakes:
cnt += (h // size) * (w // size) return cntc编程是什么>scrapydweb
l, r = 0, MAX
while l < r:
mid = l + r + 1 >> 1
if cal(mid) >= K: l = mid
else: r = mid - 1
print(l)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论