题目如下
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。
输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数
例如:
用户输入:
100
程序应该输出:
149
用户输入:
101
程序应该输出:
151
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
代码如下:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int a;
int b;
int c = n;
int count = 0;
int s = 0;
boolean flag = true;
while(flag) {
a = c/3;
b = c%3;
c = a;
s = s+b;
if(c<3) {
s = s+a;
c = s;
s = 0;
if(c<3) {
flag = false;
}
}
count = count+a;
}
System.out.println(count+n);
}
## 解体思路
不考虑余数,先将兑换的盖子数求出来, 当盖子数小于3的时候,就将之前的求得的余数的盖子放到c里面,也就是所剩的盖子数, 一直循环,直到存储的余数和盖子数相加小于3之后, 跳出循环。