IBM社会招聘笔试题
27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促
销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?
源代码粘贴如下(仅供参考):
/**题目描述
27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促
销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?
*/
#include <iostream>
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<<p<<endl;
if(argc>1)
//防止一闪而过
{
//getchar();
cout>>"Press any key to continue...">>endl;
cin.get();
}
return 0;
}