原题
描述
小K来到一家超市,发现超市的正在对一种饮料做活动,这种饮料xx元一瓶。有意思的是,可以用yy个空瓶子再换一瓶,而且可以向服务员借空瓶子,但一定要还给他们。小K想,如果把他身上的nn元钱都用来买饮料,并且再用空瓶子换(如果可以,他能一直换下去),他最多能喝到多少瓶饮料?
输入
每组数据一行,包含三个正整数n,x,y(y>1)n,x,y(y>1)。
输出
输出小K最多可以喝到饮料瓶数。
样例
In: 1 3 6 3
Out: 3
题解
啥也不说,先上代码一份:
#include<bits/stdc++.h>
#define ll long long
#define MA 110
using namespace std;
ll n,x,y,ans;
int main(){
cin>>n>>x>>y;
int k=n/x;
ans+=k;
while(k>=y){
ans+=k/y;
k=k/y+k%y;
}
if(k+1==y)ans++; //要进行特判
cout<<ans;
return 0;
}
这道题考察的就是简单的模拟,记住最后要进行特判(这是很多较有难度的模拟题特别需要注意的)。
真应该没什么好讲的,有不懂的可以在评论区留言。