题目描述
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。
输入描述
输入一个整数 �(0<�<1000)n(0<n<1000),表示开始购买的饮料数量。
输出描述
输出一个整数,表示实际得到的饮料数
输入输出样例
示例
输入
100
输出
149
import java.util.Scanner;
public class Ping {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int temp=scan.nextInt();
int count = temp;
while(true){
int i,j;
i = temp/3;
j = temp%3;
count = count + i;
temp = i + j;
if(temp < 3){
System.out.println(count);
break;
}
}
}
}
比较笨,笨解
数学证明:
(初始的n瓶饮料会有n个初始的瓶盖,n≥3)
①若允许暂借:兑换最后一瓶饮料最少只需要2个初始瓶盖(向老板借一瓶,然后喝完带上新拿的这个瓶盖就有三个,可以抵掉这一瓶),若不是最后一瓶(初始的瓶盖剩余量不少于4个),不需要暂借就可以相当于从初始的瓶盖里面拿2个就额外喝一瓶。综上,只需要2个初始瓶盖就可以额外喝一瓶饮料,我们不妨称它为“换取额外饮料的净瓶盖数”(“换取额外饮料的净瓶盖数”==2个初始瓶盖)。
(很显然这种允许暂借情况下额外喝的饮料是n/2瓶)
②不允许暂借:与允许暂借的区别:初始瓶盖剩余量为2时候,无法换到额外饮料,也就是说在初始的瓶盖数量不足3的时候无法使用“换取额外饮料的净瓶盖数”来换饮料,但是初始瓶盖数量≥3时和允许暂借的情况是一样算的,唯一区别就在于初始瓶盖剩余量为2时候,①能换,②不能,所以n为偶数时额外喝的饮料是n/2 -1瓶,为奇数时额外喝的饮料和①一样也是n/2瓶。
(不难看出统一②中的n为奇、偶数 两种情况可得到:额外喝的饮料是ceil(double(n)/2)-1瓶 )
欢迎指正~
*/