输入描述
输入一个整数 n(0<n<1000)n(0<n<1000),表示开始购买的饮料数量。
输出描述
输出一个整数,表示实际得到的饮料数
输入输出样例
示例
输入
100
输出
149
题解
声明一个变量 n 接收传入的饮料数量,sum 记录 饮料总数 yu 记录剩余的未兑换的饮料数 huan 记录可以兑换的饮料数。
while 循环,当 huan 小于 1 时,说明当前饮料数不能够兑换,结束 while 循环,sum += huan - yu,因为huan 加上了余的饮料数,二余的饮料数在最开始就已经加了,所以要减去(yu 是用来记录剩余的违背用来兑换饮料数,与总数无关,huan 中加了,所以减去),当 huan > 3时说明饮料可以继续兑换,否则剩余数为0。huan = huan/3 + yu进行下一次循环
public class YinLiaoHuanGou {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int sum = n;
int yu = n%3;
int huan = n/3 + yu;
// System.out.println(huan+" "+yu);
boolean flag = true;
while(flag) {
if(huan < 1) {
flag = false;
}
sum += huan-yu;
if(huan>3) {
yu = huan % 3;
}else {
yu = 0;
}
huan = huan/3 +yu;
}
System.out.println(sum);
}
}
例 未减去 yu 的饮料数为152 != 149
sum 100 134 146 150 152
yu 1 1 0 1 0
huan 34 12 4 2 小于1
所以 sum = huan - yu = 152 - 3 =149