题解
2025-05-23 22:05:16
发布于:浙江
19阅读
0回复
0点赞
#include<iostream>
using namespace std;
int main(){
int n,all=0,last=0;
cin>>n;
all+=n;
while(n+last>=3){
all+=n/3;
last+=n%3+n/3;
n=last;
last=0;
}
cout<<all;
return 0;
}
全部评论 1
为什么可以这样做?
2025-07-16 来自 江苏
0#include<iostream>
using namespace std;
int main(){
int n,all=0,last=0; 三个变量分别为初始瓶子数量(有几个满的瓶子),累计喝了几瓶,目前手上的空瓶数量
cin>>n; 输入初始瓶子数量
all+=n; 累计喝了n瓶
while(n+last>=3){ 当手上的空瓶以及满的瓶子数量大于3 时(可以兑换时)
all+=n/3; 累计数量加上得到的新瓶子数量等于现在喝了几瓶
last+=n%3+n/3; 兑换时多余的部分加上兑换了几个瓶子(现持有瓶子数)
n=last; 将n赋值为现有瓶子数
last=0; 空瓶数归零
进入下一次循环
}
cout<<all; 输出总共喝了几瓶
return 0;
}2025-07-16 来自 美国
1大概就是把兑换的累加然后重复操作
2025-07-16 来自 浙江
1Thanks
2025-07-16 来自 江苏
0
有帮助,赞一个