#aBC252F. [ABC252F] Bread
[ABC252F] Bread
AT_abc252_f [ABC252F] Bread
题目描述
有一块长度为 的面包,需要将其分给 个孩子。第 个孩子()想要长度为 的面包。
高桥君可以重复进行如下操作,将长度为 的面包切出来并分发:
选择一块长度为 的面包和一个整数 ,其中 。将选中的面包切分为长度为 和 的两块面包。
无论 取何值,每次切割的花费都是 。
每个孩子只能分到一块长度恰好为 的面包,剩余的面包可以有任意多块,不需要分配。
请你求出,为了分给所有孩子面包所需的最小总花费。
输入格式
输入通过标准输入给出,格式如下:
输出格式
输出分给所有孩子面包所需的最小总花费。
输入输出样例 #1
输入 #1
5 7
1 2 1 2 1
输出 #1
16
输入输出样例 #2
输入 #2
3 1000000000000000
1000000000 1000000000 1000000000
输出 #2
1000005000000000
说明/提示
限制条件
- 所有输入均为整数
样例解释 1
高桥君可以按如下方式切分面包并分发:
- 选择长度为 的面包和整数 。面包被切分为长度为 和 的两块面包。(花费 )
- 选择长度为 的面包和整数 。面包被切分为长度为 和 的两块面包。将长度为 的面包分给第 个孩子。(花费 )
- 选择长度为 的面包和整数 。面包被切分为两个长度为 的面包。将这两块面包分给第 和第 个孩子。(花费 )
- 选择长度为 的面包和整数 。面包被切分为两个长度为 的面包。将这两块面包分给第 和第 个孩子。(花费 )
此时,总花费为 ,这是最小值。没有剩余面包。
样例解释 2
请注意,每个孩子分到的面包长度必须恰好为 。
由 ChatGPT 4.1 翻译