题目链接:
思路:
考虑最差情况每种糖果都买到k-1个,那么任一买在买一个就能保证其中某一种糖果的个数达到k个,特别注意如果没有k-1个就直接加上它原本有多少个就行了,数据保证有解意味着有一种糖果的个数大于等于k。
AC代码:
#include<stdio.h>
using namespace std;
int main()
{
int n,k,sum,temp,i;
scanf("%d%d",&n,&k);
sum=0;
i=0;
for(i=1;i<=n;i++)
{
scanf("%d",&temp);
//判断糖果个数是否不小于要取的个数
if(temp>=k)//是的话取k-1个
sum+=k-1;
else//不是的话取完
sum+=temp;
}
sum++;
printf("%d\n",sum);
return 0;
}
读懂题意:Choice学姐的要求是保证买到的糖果里至少有一种糖果数目达到k个,那么我们取k-1个,最后在sum++就可以了
坑点:没有判断糖果数目小于k的情况,可能直接输出n*(k-1)+1; 这样就错了
思路题目思维不能太局限