#BN202606. 魔法绳索
题目:魔法绳索
题目描述
魔法工坊中有 N 根绳索,第 i 根绳索的长度为 a_i。
现在,工匠需要从这些绳索中截取出至少 K 段长度相同的魔法绳。
每段魔法绳的长度必须是正整数,并且:
- 每根绳索可以被切成若干段;
- 不同绳索切出的绳段长度必须相同;
- 每根绳索剩余的部分可以丢弃;
- 不能把两根绳索拼接后再切割。
请你计算:每段魔法绳的长度最大是多少。
输入格式
第一行包含两个正整数 N 和 K:
N表示绳索的数量;K表示至少需要的魔法绳段数。
第二行包含 N 个正整数:
a_1, a_2, ..., a_N
表示每根绳索的长度。
输出格式
输出一个整数,表示每段魔法绳的最大长度。
如果无法截取出至少 K 段长度相同的正整数绳段,输出 0。
样例输入
4 7
10 15 20 8
样例输出
5
样例说明
当每段绳子的长度为 5 时:
- 长度为
10的绳子可以截出2段; - 长度为
15的绳子可以截出3段; - 长度为
20的绳子可以截出4段; - 长度为
8的绳子可以截出1段。
一共可以截出:
2 + 3 + 4 + 1 = 10
段,满足至少 7 段的要求。
当每段长度为 6 时:
10 / 6 + 15 / 6 + 20 / 6 + 8 / 6
= 1 + 2 + 3 + 1
= 7
也可以截出 7 段。
当每段长度为 7 时:
10 / 7 + 15 / 7 + 20 / 7 + 8 / 7
= 1 + 2 + 2 + 1
= 6
不足 7 段。
因此答案应该为 6。
数据范围
对于所有测试数据:
1 ≤ N ≤ 10^51 ≤ K ≤ 10^141 ≤ a_i ≤ 10^9
保证所有 a_i 的总和不超过 10^14。