墨汁
程序员文章站
2022-03-09 20:17:03
...
题目描述
小T擅长国画,特别崇拜以画马著称的国画大师徐悲鸿先生,所以小T也很喜欢画马,众所周知画马是需要很多墨汁的,为了节省支出,小T决定参加龙城近墨堂最近推出的以瓶换墨活动,本次活动为期三月,活动期间你可以用M个空墨汁瓶换取一瓶全新包装的墨汁(包装里面有一个瓶,瓶里装满了墨汁),为了方便叙述,下文一律将一瓶全新包装的墨汁简称为一瓶墨汁。近墨堂老板心地非常善良,即使你手头只差一个空瓶他也会换给你一瓶墨汁,条件是你必须在用完这瓶墨汁后将空瓶还给老板,但如果你差两个或两个以上空瓶则老板就不会换给你了。现在,小T手中有N瓶墨汁,请问他通过以瓶换墨最多能够用到多少瓶墨汁?
输入
仅有一行包含两个用空格隔开的自然数N和M(3≤M<N≤100),表示小T手中有N瓶墨汁,近墨堂的以瓶换墨活动规定用M个空墨汁瓶可以换一瓶墨汁。
输出
仅有一行包含一个自然数,表示小T最多能用到多少瓶墨汁。
样例输入
10 3
样例输出
15
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
int n,m,t=0,y;//定义 小T手中的墨汁瓶数 为n,用m个 空瓶换一瓶新的墨汁 ,t为 小T最多换几瓶 ,y为 余数
cin>>n>>m;//输入
while(n>=m){//当小T手中的瓶数大于等于活动规定的空瓶数时,执行以下操作
y=n%m;//小T用空瓶换墨之后还多出来的 墨汁瓶数
t+=n-y;//总瓶数-余数为小T用完了的 墨汁瓶数
n=n/m+y;//小T手中还剩下 空瓶换墨得来的墨汁+余下的墨汁瓶数
}
t+=n;//用完不足 m 瓶的墨汁
if(m-n==1)
t++;//如果剩下的 空瓶 差一瓶,还可以再换一瓶,用完之后还给老板
cout<<t<<endl;//输出最多能用几瓶
return 0;
}
思路挺简单的,但是好像被我写的有点复杂,果然还是不太会表达T - T