HOME> 健康观赛知识> 解决27人饮料需求的最小购买数量

IBM社会招聘笔试题

27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促

销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?

源代码粘贴如下(仅供参考):

/**题目描述

27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促

销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?

*/

#include

using namespace std;

int _num=27; //运动员个数

int _exnum=3; //换一瓶饮料需要的空瓶数量

int main(int argc,char**argv)

{

int s=0; // s代表喝到的饮料瓶数

int p=0; // p代表购买的饮料瓶数

int empty=0; // empty代表空饮料瓶数

while(s<_num)

{

if(empty>=_exnum)

{

empty-=_exnum;

s++;

empty++;

continue;

}

int tmp=_exnum-empty; //凑齐空瓶需要购买的瓶数

if(tmp>=_num-s) //凑齐空瓶需要购买的瓶数超过了运动需要的饮料数,此时只需够买必须的饮料就可以,无需贪图小利

tmp=_num-s;

p+=tmp;

s+=tmp;

empty+=tmp;

}

cout<

if(argc>1)

//防止一闪而过

{

//getchar();

cout>>"Press any key to continue...">>endl;

cin.get();

}

return 0;

}