题目:
代码:
#include<stdio.h>
int main()
{
int n,k;
scanf("%d %d",&n,&k);
int weight[1500];
int ori_sum=0;
for(int i=0;i<n;i++)
{
scanf("%d",&weight[i]);
ori_sum+=weight[i];
}
int friend_num=0;
int cake_wei=0;
int sum=0;
for(int i=0;i<n;i++)
{
cake_wei+=weight[i];
if(cake_wei<k)
{
continue;
}
while(cake_wei>=k)
{
friend_num+=1;
sum+=cake_wei;
cake_wei=0;
}
}
if(sum!=ori_sum)
{
friend_num+=1;
}
printf("%d",friend_num);
return 0;
}
本题要注意最后可能有蛋糕是不满足>k的,但是这个朋友仍然算是分到了蛋糕。所以使用已经满足>k的蛋糕总和与总的蛋糕之和进行比较,就知道是否刚好分完,如果没有刚好分完,则需要在分到蛋糕的朋友人数上+1.