瞎玩 - 一瓶啤酒2塊,兩個瓶蓋送一瓶,四個空瓶換一瓶。20元一共可以喝幾瓶

問題:

一瓶啤酒2塊,兩個瓶蓋送一瓶,四個空瓶換一瓶。20元一共可以喝幾瓶?

思路:

啤酒,對我們有用的屬性就是瓶蓋和空瓶,10瓶啤酒可以考慮分別計算瓶蓋和空瓶所得瓶數,再求和即可!

代碼如下:

#include <stdio.h>
#include <stdlib.h>

#define MONEY	20

unsigned int compute_fun(unsigned int m,unsigned int n)
{
	unsigned int res = 0;
	unsigned int temp=m;
	while(temp != 0)
	{
		temp /= n;
		res += temp;
	}
	return res;
}

unsigned int recu_fun(unsigned int m,unsigned int n)
{
	unsigned int val= m;
	unsigned int res = 0;
	while(val !=0)
	{
		val= compute_fun(val,n);

		res += val;
	}
	return res;
}
int main(int argc, char* argv[])
{
	unsigned int beernum = 0;
	unsigned int t1 = 0,t2 = 0;

	beernum = MONEY/2;
	t1 = recu_fun(beernum,2);
	t2 = recu_fun(beernum,4);
	beernum += t1;
	beernum += t2;
	printf("t1:%d,t2:%d beer number = %i\n",t1,t2,beernum);
	getchar();
	return 0;
}
運行結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章