牛客网-华为题库-汽水瓶

1.汽水瓶

某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有 nn 个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M输入描述:

本题将会给出  组测试数据,确切数字未知,您需要一直读入直到特定的结尾;您也可以参考 牛客网在线判题系统使用帮助 获得更多的使用帮助。每组测试数据描述如下:

在一行上输入一个整数n  ,代表小张手上的空汽水瓶数量。特别地, n=0代表输入结束,您只需要立即退出,不需要针对这种情况进行处理。

输出描述:

对于每一组测试数据,新起一行。输出一个整数,代表小张最多可以喝到的汽水数量。

示例1输入例子:

3
10
81
0

输出例子:

1
5
40

例子说明:

对于第一组测试数据,共有  个空瓶,可以换  瓶汽水。可以证明无法再做任何兑换,因此最多可以喝到  瓶汽水。

对于第二组测试数据:
第一轮兑换,共有 个空瓶。可以换 瓶汽水,余下 个空瓶;
第二轮兑换,刚刚余下 个空瓶、加上刚刚兑换的 瓶汽水喝完,共有 个空瓶。可以换 瓶汽水,余下 个空瓶;
第三轮兑换,刚刚余下 个空瓶、加上刚刚兑换的 瓶汽水喝完、再找老板借 个空瓶,共有 个空瓶。可以换 瓶汽水,余下 个空瓶。喝完之后不要忘记归还借的空瓶。
综上,一共可以喝到 瓶汽水。
#include <iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        if(n == 0)
            return 0;
        int rem = n;
        int exchange = 0;
        while(rem > 1)
        {
            exchange += rem/3;
            rem = rem/3 + rem%3 ;
            if(rem == 2)
            {
                exchange +=1 ;
                break;
            }
        }
        cout<<exchange<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

Add a Comment

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据