墨汁...

题目描述

小T擅长国画,特别崇拜以画马著称的国画大师徐悲鸿先生,所以小T也很喜欢画马,众所周知画马是需要很多墨汁的,为了节省支出,小T决定参加龙城近墨堂最近推出的以瓶换墨活动,本次活动为期三月,活动期间你可以用M个空墨汁瓶换取一瓶全新包装的墨汁(包装里面有一个瓶,瓶里装满了墨汁),为了方便叙述,下文一律将一瓶全新包装的墨汁简称为一瓶墨汁。近墨堂老板心地非常善良,即使你手头只差一个空瓶他也会换给你一瓶墨汁,条件是你必须在用完这瓶墨汁后将空瓶还给老板,但如果你差两个或两个以上空瓶则老板就不会换给你了。现在,小T手中有N瓶墨汁,请问他通过以瓶换墨最多能够用到多少瓶墨汁?
 

输入

仅有一行包含两个用空格隔开的自然数N和M,表示小T手中有N瓶墨汁,近墨堂的以瓶换墨活动规定用M个空墨汁瓶可以换一瓶墨汁。

输出

仅有一行包含一个自然数,表示小T最多能用到多少瓶墨汁。

样例输入

【样例输入1】
10 3
【样例输入2】
10 4

样例输出

【样例输出1】
15
【样例输出2】
13

提示

样例1中用3个空墨汁瓶可以换取一瓶墨汁,开始是有10瓶墨汁,他全部用完后拿其中的9个空瓶换3瓶墨汁,换来的3瓶用完后再拿这3个空瓶换1瓶墨汁,再用完后他拿最后2个空瓶去换1瓶墨汁,将这瓶用完后把空瓶还给老板即可,这样他一共可以用15瓶
【数据范围】
对于50%的数据满足 1<=N<=10 2<=M<=3
对于100%的数据满足 1<=N<=100 2<=M<=10

#include<stdio.h>

int main(){
	int n,m,k=0,kp,xkp,T;
	scanf("%d%d",&n,&m);
	T=n;
	kp=n;
	xkp=0;
	while(kp>m-1){
		xkp=kp/m;
		T=T+xkp;
		kp=kp-xkp*m+xkp;
		if(kp==m-1){
			xkp++;
			kp=kp-m;
			T++;
		}
	}
	printf("%d",T);
	return 0;
}

自我反思:这道题代码虽然少,但还真有点绕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值