请帮我作一道编程题,非常感谢!

来源:百度知道 编辑:UC知道 时间:2024/06/14 10:40:35
27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?

请用程序实现!

public class CountDrink {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

int total,increase,rest=0;
int num,cnt;

//瓶子数必在【9,27)的区间内,对每个可能值进行遍历
for(cnt = 27/3; cnt < 27; cnt++){
total = cnt;
num = cnt;
while(num/3>0){
increase = num/3;
rest = num%3;
total += increase;
num = increase + rest;
}

if(total>=27)
break;
}

System.out.println("at lease,need to buy:"+ cnt);
}

}

//at lease,need to buy:19

public class Test {

/**
* @param x 购买的瓶数
* @return 可以换取的瓶数
*/
public int getNumber(int x){
if(x == 3 || x == 2){
return 1;
}else if(x < 2){
return 0;
}else{
return x / 3 + getNumber(x / 3 + x % 3);
}