問題:
一瓶啤酒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;
}
運行結果: