题目描述
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。
思路
记得曾经在一本小学奥数书上看到类似的题目,当时书中有个思路是这样的:
三个瓶盖能换一瓶饮料,即三个瓶盖=一瓶饮料。
而一瓶饮料=一个瓶盖+一瓶饮料里的饮料。
联立以上两个等式,三个瓶盖=一个瓶盖+一瓶饮料里的饮料
同时减去一个瓶盖,即两个瓶盖=一瓶饮料里的饮料。
所以如果初始有i瓶饮料,可以看作初始有i瓶饮料和i个瓶盖,每两个瓶盖换一瓶饮料,
最终就能喝到i+i/2瓶饮料。
这是最理想的情况,如果可以赊账或者暂借瓶盖,就可以这样计算。
而i%2如果等于0,说明小明喝完饮料以后没有瓶盖了。由于不能暂借,小明就喝不到这一瓶,将答案减去一即可。
时间复杂度
O(1)
java 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int i=in.nextInt();
int n=i;
if(i>3){
//特判,如果初始饮料数小于三不能这样计算
if(i%2==0)
n--;
//判断小明喝完后是否还剩下瓶盖,如果不剩,就说明他需要赊账或者暂借瓶盖,答案需减一
n+=i/2;
//能喝到的饮料数等于初始的饮料数加上每2个瓶盖换的一瓶饮料
}
System.out.println(n);
}
}
不确定这样是否严谨,欢迎大家指出错误