首页 > 试题广场 >

1000瓶饮料,3个瓶子可以再换一瓶,一共可以喝多少瓶?(不

[单选题]
1000瓶饮料,3个瓶子可以再换一瓶,一共可以喝多少瓶?(不能另外再借瓶子)
  • 1498
  • 1499
  • 1500
  • 1501
没收3个空瓶,送你一个空瓶,可以等效为没收了两个瓶。但是这个等效是有条件的,当剩余的瓶子不到4个了,就不能再用减2这个方法了。所以问题转化为1000可以减去多少次2,且减到4以下时不再减。答案是1499
发表于 2015-08-31 23:51:12 回复(0)
1000+1000/3+333/3 + 111/3 + 37/3 + 12/3 + 4/3 + 1 = 1498
其中1000/3 , 37/3, 4/3 余下3个又能换一瓶
所以 1499
发表于 2016-05-04 17:36:39 回复(0)
第1次:喝1000瓶     剩1000空瓶
第2次:喝333瓶       剩334空瓶
第3次:喝111瓶       剩112空瓶
第4次:喝37瓶       剩38空瓶
第5次:喝12瓶       剩14空瓶
第6次:喝4瓶        剩6空瓶
第7次:喝2瓶        剩0空瓶
共喝1000+333+111+37+12+4+2=1499瓶
发表于 2016-06-19 21:30:35 回复(4)
首先全部喝掉1000瓶。除以3等于333瓶,剩一个空瓶。喝掉333瓶,再换111瓶,没有空瓶;再喝掉111瓶,再换取37瓶,全部喝掉,在换取12瓶,剩余一个空瓶。喝掉12瓶,在换取4瓶,全部喝掉,在可以换取1瓶,剩一个空瓶。现在总共喝掉了1000+333+111+37+12+4=1498瓶,然而还有3个空瓶,再换取一瓶,可以喝掉,总共是1499瓶
发表于 2015-09-09 11:01:44 回复(1)
x,y=1000,0
while x>0:
    y+=1
    x-=1
    if y%3==0:
         x+=1
print(x)

发表于 2014-12-31 17:32:40 回复(0)
3|1000
  3|333······1
   3|111······0
    3|37······0
     3|12······1
       3|4······0
        3|1······1
           0······1
1000+333+111+37+12+4+1再加上剩下四个空瓶可兑换一个,所以再加一
1000+333+111+37+12+4+1+1=1499
发表于 2021-10-22 23:22:46 回复(0)
这道题没有说清楚,最后手里还剩下2个瓶子,如果可以跟老板商量先兑换一瓶饮料再把瓶子还给他,那么最后一共喝了1500瓶。这个在《王道》上面有介绍。
发表于 2015-09-07 23:00:53 回复(3)
哪位大神写个代码看看?
发表于 2015-11-11 22:58:20 回复(2)
B。
发表于 2015-04-23 11:47:50 回复(0)
昨天做了一道可以和老板换瓶子的,今天又不给换了,到底要搞啥子哦
发表于 2016-04-19 11:17:39 回复(0)
public static void main(String[] args) {
    System.out.println(getMum(1000)); } private static int getMum(int n){ int m = n%3; //剩下的水  int j = n/3; //新换的水。  int sum =0;  if (j==0) { return m;  }else {
        sum = (n-m)+getMum(m+j);  } return sum; }
发表于 2022-04-14 18:16:51 回复(0)
(1000-3)/2+1+1000
发表于 2022-03-07 21:46:01 回复(0)

1000

333+1空

111+1空

37+1空

12+2空

4+2空

2+3空换1

总计1499瓶

发表于 2020-02-28 04:11:21 回复(0)
过程的数全部算对,结果最终结果错了 也是服了自己的智商
发表于 2018-03-22 21:14:16 回复(0)
可以用2个瓶子兑换一瓶,兑换的瓶子和之前2个瓶子凑成3,,,,1000可用换500瓶,总共1500瓶
发表于 2017-10-09 23:58:27 回复(0)
哇,不能借瓶子又没说不能先赊一瓶饮料
发表于 2017-09-18 16:51:42 回复(0)
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include <cstring>
#include<algorithm>
using namespace std;
int main() {
    int n=1000,cnt=1000;
    while(n>=3)
    {
        cnt+=n/3;
        n=n/3+n%3;
    }
cout<<cnt<<endl;
    return 0;
} 

发表于 2017-08-05 15:08:53 回复(0)
void PingZi(int n, int m)//n个瓶子,m个可以换一瓶 { int total = n, count = 0; while (total>0) { count++; total--; if (count % 3 == 0) total++; } cout << "一共可以喝" << count << "个瓶子" << endl; }
发表于 2017-03-16 13:26:54 回复(0)
1499
public class Main {
	public static void main(String[] args) {
		System.out.println(f(1000));
		System.out.println(g(1000));
	}

	//算法1
	static int f(int n) {
		if (n < 3) return n;
		int m = n / 3 * 3;
		int t = n % 3 + n / 3;
		return m + f(t);
	}

	//算法2
	static int g(int n) {
		int total = 0;
		int counter = 0;
		while (n > 0) {
			--n;
			++total;
			++counter;
			if (counter == 3) {
				counter = 0;
				++n;
			}
		}
		return total;
	}
}


发表于 2017-03-10 00:20:23 回复(0)
3空瓶 =  瓶内饮料 +1空瓶
=> 2空瓶 = 瓶内饮料
1000瓶饮料 = 1000瓶内饮料 + 1000空瓶 = 1000瓶内饮料 + 500瓶内饮料 = 1500瓶内饮料
至于最后一瓶怎么换,看老板同不同意了。
发表于 2015-06-03 17:04:03 回复(0)