题解 | #汽水瓶#

汽水瓶

https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

代码中有注释,可以注释和思路结合着看。

解题思路

由题意得当汽水瓶数量>=2时都可以换新的汽水,在剩余瓶子为2时可以借一个凑够三个瓶子换一个。

运算次数

a

sum

temp

a=a+temp(剩余空瓶数)

初始

10

0

0

1

10/3=3

10/3=3

10%3=1

3+1=4

2

4/3=1

3+4/3=4

4%3=1

1+1=2

3

2

sum++=4+1=5

#include <stdio.h>

int main() {
    int a[10]={0};//用于接收初始汽水瓶数
    int i=0,sum[10]={0};//sum[i]用于统计对应a[i]可以喝几瓶汽水
    int temp=0;//用于存a[i]与三的余数,也就是去换汽水时不足三瓶不能兑换的空瓶子
    while(scanf("%d",&a[i])!=EOF)
    {
        if(a[i]==0||i>9)//判断当接收的数据为0或者超过数组上限时直接跳出当前循环
        {
            break;
        }
        while(1)
        {
            if(a[i]<2)//当瓶子数量不足2时,借一个瓶子也不够三因此直接跳过不计算
            {
                break;
            }
            else if(a[i]>=2)//当瓶子数量大于等于2时,满足题意可以计算
            {
                if(a[i]==2)//当剩余空瓶子数量等于2时,可以找老板借一个瓶子,换得一瓶汽水,且瓶子需要归还,所以直接在可以喝的汽水总数+1,然后跳出循环
                {
                    sum[i]++;
                    break;
                }
                temp=a[i]%3;
                a[i]=a[i]/3;
                sum[i]=sum[i]+a[i];
                a[i]=a[i]+temp;
            }
        }
        printf("%d\n",sum[i]);
        i++;
    }
    
    return 0;
}

全部评论

相关推荐

kyw_:接好运
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务