问题描述:
Choice学姐在糖果店里看这么多的糖果,她想如果能全部拿回家就好了。现在糖果店里有n种糖果(1-n编号),每种糖果有mi个(mi代表第i种糖果的个数),Choice 学姐只有两个纸袋,每个纸袋都最多装w个糖果。Choice学姐不想一个纸袋混有多种糖果(一次一个纸袋里只能装一种糖果),那么Choice学姐至少要拿多少次才能把这些糖果全部带回家呢?
输入:
第一行输入两个整数n,w(1 <= n ,w<= 1e4),用空格隔开
接下来一行n个空格分隔的整数mi,表示第i种糖果的个数。(1<= mi <= 1e3)。
输出:
输出至少要拿多少次,答案占一行。
样例输入:
6 5 3 2 6 5 4 4
样例输出:
4
原因分析:
算出总共需要几个袋子后,袋子数/2要分情况,因为因为 / 结果是整数,即奇数会下取整,会少一次 ,所以可以将 奇数 偶数情况 合并 (ans+ 1) / 2 例如 7/2=3 ,数学上应该等于3.5,实际需要4次 ,偶数 8 需要4次,加1后仍然是四次 其实 ans/2 + 0.5 +0.5 相当于四舍五入
以后 实际应用中 /2 记得考虑下 奇偶两种情况,是否会产生影响
解决方案:
#include <stdio.h>int main()
{int n, w, t;int ans = 0;scanf("%d%d", &n, &w);for(int i = 1; i <= n; i++) {scanf("%d", &t);ans += t / w;if(t % w)ans ++;}printf("%d\n", (ans+ 1) / 2);return 0;
}